关于checkbox多个选项查询的问题,谢谢。
现在的需求是这样的,
前台页面上有三个checkbox,
这三个checkbox分别对应三种查询,XX YY ZZ 这三种查询 查询的表不一样。
代码如下:
public String add(){
String type[]=["10","20","30"];//由页面传递过来,组合为8种checkbox的组合 一个个的if-else太麻烦了
//["10","20","30"]、["10","20"]、["10","30"]、["20","30"]、["10","20","30"]、["10"]、["20"]、["30"]
if(type.equals("10")){
int number = doXXX();
if(number>100){
return "too big";
}else{
list = doXX();
return "something";
}
}else if(type.equals("20")){
int number = doYYY();
if(number>100){
return "too big";
}else{
list = doYY();
return "something";
}
}else if(type.equals("30")){
int number = doZZZ();
if(number>100){
return "too big";
}else{
list = doZZ();
return "something";
}
}else if(type.equals("10,30")){
int number1 = doXXX();
int number2 = doZZZ();
if((number1+number2)>100){
return "too big";
}else{
list = doXX();
list = doZZ();
return "something";
}
}else if(){
......
}
改进之后如下:我在集合里面迭代,有值的时候执行if,但是这种判断
number数量就不好判断了,请问该怎么弄,谢谢。
public List<User> add(){
String type[]=s;//由页面传递过来,组合为8种checkbox的组合
//["10","20","30"]、["10","20"]、["10","30"]、["20","30"]、["10","20","30"]
for(String tp:s){
if(tp.equals("10")){
int number = doXXX();
if(number>100){
return "too big";
}else{
list = doXX();
return "something";
}
}
if(tp.equals("20")){
int number = doYYY();
if(number>100){
return "too big";
}else{
list = doYY();
return "something";
}
}
if(tp.equals("30")){
int number = doZZZ();
if(number>100){
return "too big";
}else{
list = doZZ();
return "something";
}
}
}
}
[解决办法]
相对而言吗。我觉得你要是觉得这样if判断太多,你最好将这里面的值应用到你的查询上。最后就一个for循环。
比如
for(int i : args){
db.query("select * from xxx where number=" + i);
}
想办法去这样优化。
[解决办法]
query(a,b,c)
这是一个查询数据库的方法,a,b,c 分别是3个下拉选的值
如果b和c为空 查询a表
a为空 查询b表和c表
以此类推吗
[解决办法]
最外面定义一个count
如果 a有值,则加到count里面去。
一个个的判断
if (a){
}
if(b){
}
if(c){
}
是并列的关系。
[解决办法]
个人观点:不需要分什么 组合,, js 获取checkbox的 value ,如果 被 选中 就获取 value ,如果 没有被选中 就传 null;那么 你后台 接收的 就是 3个 值(不管 是否为空) ,, 在 用 sql根据这 3个 值 去 查询 就 解决 了 。。 个人 感觉要 把握 需求、做出合理的分析、、这个 是最重要的