情景假设:增加某一员工对象时候,为了提高系统使用者的使用体验,可以在填写完新增对象之后点击“预览”跳转到新的预览页面。
1.提交所选下拉框的值
比如一个员工对象的职别属性是通过下拉框来选择的,虽然提交给后台的是职别的typeId,但预览页面却应该显示职别名称。可以这样做:为员工对象EmployeeVO设置一个除了typeId外的typeName属性。
<td nowrap="nowrap" width="15%" class="td_title">选择员工职别<font color="red">*</font></td>
<td width="35%" nowrap="nowrap">
<select id="lcdId" name="employeeVO.typeId" Style="width:215px;" >
<option value="0">员工职别</option>
<option value="1">xx</option>
<option value="2">yyy</option>
<option value="3">zzz</option>
</select>
</td>
此外,必须有一个隐藏域(必须放在form表单里面)来保存typeName的值:
<s:hidden id="typeName" name="employeeVO.typeName" />
form表单提交给服务器的js(这段js通常处在表单提交前验证的js中):
form["employeeVO.typeName"].value= jQuery("select[name=employeeVO.typeId] option[selected]").text();
2.关于多选框(checkbox)值的提交
<s:checkboxlist name="employeeVO.hobbys" list="#Policy.hobbyList" listKey="hobbyId" listValue="hobbyname" >
</s:checkboxlist>
而后台获取到的是类似"7, 9, 10, 4"之类的hobbyId字符串,通常的处理是
String[] hobbyIds = employeeVO.getHobbys().split(",");
需要注意的是会得到字符串数组:[1, 9 ,10, 4]而且每个数组元素除第一个外,都会有前置空格,例如第二个数组元素为“ 9”,所以要注意去空格再用Interger.parseInt(hobbyIds[i].trim())的方式正确取出hobbyId
3.啥时候用到<s:iterator ../>标签中的stat属性?
eg.取出循环集合的下标时:
<s:iterator value="employeeList" status="stat" >
<tr >
<td nowrap="nowrap" class=td_detail style="TEXT-ALIGN: left" >
<input type="radio" name="employeeList[<s:property value="#stat.index"/>].gender" value="1" checked="checked">性别</input>
</td>
</tr>
</s:iterator>