1.action
//新建存取参数的map对象
Map<String, Object> param = new HashMap<String,Object>();
//先清除一下,防止有其他遗留参数
param.clear();
//status为数据表中的状态字段,为0表示没有被操作过
param.put("status", "0");
//现在要查询码表表将在select中要显示的数据取出来,codeType是码表的字段,orderSource是码表对应字段的值
param.put("codeType", "orderSource");
//SysCode是码表对应的Model,通过Mybatis代码生成器生成的方法getByParam将select的所有值查出来
List<SysCode> orderStatusList = codeService.getByParam(param);
//modelAndView
mv = new ModelAndView();
//添加Object--页面正常要显示的数据
mv.addObject(ModelAndViewConstants.PAGE_RESULT, pageResult);
//添加Object--下拉框查询 select 要显示的数据
mv.addObject("orderStatusList", orderStatusList);
//添加view,跳到jsp页面,路径是在常量类中存放
mv.setViewName(ModelAndViewConstants.BUS_TRANSACTION_REPORT_MAIN);
2.jsp页面
注:
items="${orderStatusList} 是action传过来要在select显示的值
在循环里,如果码表中的数字与要查询的modedl的字段相等
那么这个option的value就为码表中的数字那个字段
要显示的就是对应的汉字的字段
<label>订单来源:
<select data-toggle="selectpicker" name="orderSource">
<option value="">全部</option>
<c:forEach items="${orderStatusList}" var="orderStatus">
<c:choose>< BR> <c:when test="${orderStatus.codeValue==pageResult.ext.orderSource}">
<option value="${orderStatus.codeValue}" selected >
${orderStatus.codeName }
</option>
</c:when>
<c:otherwise>
<option value="${orderStatus.codeValue}" >
${orderStatus.codeName }
</option>
</c:otherwise>
</c:choose>
</c:forEach>
</select>
</label>
其中select的name属性在表单提交后作为获取值的标识,值就是被选中的option的value属性。
点击表单提交到action
3.提交到action
public ModelAndView tolist(String orderSource){
在ModelAndView中通过参数绑定获取到orderSource所对应的值。
进行判空并存放查询数据的参数:
if(orderSource!=null&&!"".equals(orderSource)){
//将获取的数据存放起来,作为查询的参数
pageResult.getParam().put("orderSource", orderSource);
pageResult.getExt().put("orderSource", orderSource);
}
然后执行查询:
依次经过service serviceImpl dao 层来到mapper:
<if test="orderSource != null"> AND sc.CodeValue = #{orderSource}</if>