标签:
1 <input onclick="$(‘[name=privilegeIds]‘).attr(‘checked‘,this.checked)" type="checkbox" name="privilegeIds"></input> 2 <!--下面的是相同的checkbox 跟上面的名称一致--> 3 4 <ul id="root"> 5 <%-- 第一级 --%> 6 <s:iterator value="#privilegelist"> 7 <li> 8 <input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? ‘checked‘ : ‘‘}"/> > 9 <label for="cb_${id}"><span class="folder">${name}</span></label> 10 <ul> 11 <%-- 第二级 --%> 12 <s:iterator value="children"> 13 <li> 14 <input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? ‘checked‘ : ‘‘}"/> > 15 <label for="cb_${id}"><span class="folder">${name}</span></label> 16 <ul> 17 <%-- 第三级 --%> 18 <s:iterator value="children"> 19 <li> 20 <input type="checkbox" name="privilegeIds" value="${id}" id="cb_${id}" <s:property value="%{id in privilegeIds ? ‘checked‘ : ‘‘}"/> > 21 <label for="cb_${id}"><span class="folder">${name}</span></label> 22 </li> 23 </s:iterator> 24 </ul> 25 </li> 26 </s:iterator> 27 </ul> 28 </li> 29 </s:iterator> 30 </ul> 31 <!--只需要看input标签即可-->
这段代码我想说明的是 如果你提交的同名(name属性名称相同的话,那么他们的value值的类型必须一致且最好与你action里定义的属性类型一致)否则会出现上面异常,且这个异常非常的不容易发现。
避免错失:定义前台表单元素数据时如果,例如:你的全选按钮只是一个事件功能并不需要向后台action提交数据的话,就不要设置该元素的 name属性了,即只要是向后台提交数据的表单元素都可以不设置name属性,避免因此发生不必要的异常。
这个问题好像在strtus2.1以上版本才出现, 这个问题的上面的解决方案已经把原因说的差不多了,在实际应用中,我估计大部分情况应该都是在action里面定义了int或者别的什么类型的变量,然后指望struts的自动填装把post来的数据转换,这时容易出现转换失败,从而导致了这个错误,所以查这个错误,可以利用ff的httpfox来查看实际post的参数是什么,然后和action中对应的属性对比,看那个会出现转换错误。
淡然另一种就是上面说的在所有的set 中加入断点,总能看到是哪个方法执行失败的。
另外还有种就是页面提交了同一个名字的参数多个,比如
页面冲提交了了两个username ,而我的后台却只写了一个String username,这样同样会出错,这个是利用httpfox看的,
其实最好的是action中的和post相对应属性都设置成为String类型,省事,也不会再出现这个错误了,然后在execute中执行转换。这样也方便差错
关于struts2出现No result defined for action????Action and result input - action
标签:
原文地址:http://www.cnblogs.com/af826/p/4270408.html