今天做一个回显的小功能,写好代码觉得没问题,可是页面中就是不勾选。原来是空格问题。先看界面功能。
1.界面
界面功能:添加后在列表中查询出来,然后点击编辑经营种类那回显数据。
2.前台代码(回显部分)
<td style="text-align: right"><label class="control-label">经营种类:</label> </td>
<td style="text-align: left;height:30px; line-height:30px;" >
<s:iterator value="#dictList" id="dict">
<input type="checkbox" name="category" id="${dict.id}" value="${dict.name }"
<c:forEach items="${al}" var="a">
<c:if test="${dict.name == a }">checked </c:if>
</c:forEach>
/>
${dict.name }
</s:iterator>
<span style="font-family:FangSong_GB2312;"> </td>
</td>
</span>
3.修改前的action
public String editUI() throws Exception {
//1.从数据字典中查分类
LinkedHashMap<Object, Object> equalFields = new LinkedHashMap<Object, Object>();
equalFields.put("category", "A");
List<Dict> dictList = dictService.findResultListByEqual(Dict.class, equalFields);
ActionContext.getContext().put("dictList", dictList);
System.out.println(dictList.size());
//2.准备数据tenant
System.out.println("tenantId====" + model.getTenantId());
Tenant tenant = tenantService.getById(Tenant.class, model.getTenantId());
System.out.println("种类====" + model.getCategory());
if(tenant.getCategory() != null && !"".equals(tenant.getCategory())){
String[] c = tenant.getCategory().split(",");
System.out.println("c===" + c);
ArrayList al = new ArrayList();
for(int i = 0;i<c.length;i++){
if(StringUtils.isNotBlank(c[i])){
al.add(c[i]);
}
}
System.out.println("al====" + al);
//放到map中
ActionContext.getContext().put("al",al);
}
//放到栈顶
ActionContext.getContext().getValueStack().push(tenant);
//<span style="font-family:FangSong_GB2312;">3</span>.分页
new QueryHelper(Tenant.class, "t")
.preparePageBean(tenantService, pageNum, pageSize);
return "list1";
}
页面效果:只选中第一个,如果多个不全选中
4.解决
分析:action中将查到的字段放到list中,在页面上用struts2标签迭代,结果应该正常。打印了一下list,发现字段之间空格很大,一开始没有注意。然后到数据库中自己添加一个经营种类,页面能显示,并且打印的list没空格,抱着试试看的态度加了trim()函数,结果成功了!
al.add(c[i].trim());
5.总结
一个不起眼的trim()函数占用了好长时间,加上它就能回显成功,真让我抓狂。不过最后提醒大家不要小看它。