天天看点

所选下拉框的name值以及多选框选中值的提交

情景假设:增加某一员工对象时候,为了提高系统使用者的使用体验,可以在填写完新增对象之后点击“预览”跳转到新的预览页面。

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>