问题场景
在进行web开发时,需求方提出多字段查询的要求。
解决方式
一般的页面查询只给了一个输入框接收查找值,在后端通过like方式实现,多字段查询即是对SQL语句的扩展而已(多几个if判断)。
具体解决思路:
a 在要添加的页面(父页面)增加一个高级查询按钮;
b 通过这个按钮触发多字段页面(子页面,表单接收多字段的值);
c 在子页面提交父页面的表单。
code
子页面的取到多字段的值
<script type="text/javascript">
var dg;
$(document).ready(function(){
dg = frameElement.lhgDG;
dg.addBtn('ok','查询',function(){
var inMutations = new Array();
var myform = document.getElementsByTagName('form')[0];
var xinp = myform.getElementsByTagName('input');//获取表单中所有输入框
for (var i = 1; i < xinp.length; i++) {//循环 从1开始是去掉隐藏的id
inMutations[i - 1] = xinp[i].value;//将每个输入框中的值付给数组对应项
}
//调用父页面的函数
parent.submitForm(inMutations);
dg.cancel();
});
});
</script>
父页面的函数
<script type="text/javascript">
//提交高级查询
function submitForm(inMutations){
$("#individualMutationForm").attr("action", "${pageContext.request.contextPath}/individualMutation/listCopy.html?indivMutations="+JSON.stringify(inMutations));
$("#individualMutationForm").submit();
}
</script>
controller里的函数
/**
* 高级查询展示方法
* @param indivMutations
* @param session
* @return
*/
@RequestMapping(value="/listCopy")
public String listCopy(@RequestParam String indivMutations, HttpSession session, Model model){
JSONArray array = JSONArray.fromObject(indivMutations);
IndividualMutation individualMutation = new IndividualMutation();
//39为多字段的个数
if (array.size() == 39) {
individualMutation.setXXX((String) array.get(0));
individualMutation.setXXX((String) array.get(1));
individualMutation.setXXX((String) array.get(2));
。。。。。。
individualMutation.setXXX((String) array.get(38));
}
User user = (User)session.getAttribute(Const.SESSION_USER);
String username = user.getUsername() == null ? "" : user.getUsername();
Integer lookAll = 0;//为假
if (IndivPdfUtils.isLookAll(username)) {
lookAll = 1;//为真
}
List<IndividualMutation> individualMutationList = individualMutationService.getIndividualMutation(individualMutation);
model.addAttribute("individualMutationList", individualMutationList);
model.addAttribute("individualMutation", individualMutation);
model.addAttribute("lookAll", lookAll);
//展示的视图也要单独copy一份
return "individualMutation/individualMutationCopy";
}