java - Struts 2(在 jsp 的迭代器之外使用 Select 会导致逗号附加在选择值上而不是重置它)
问题描述
我在将一些 struts 1 代码迁移到 struts 2 时遇到问题。在这种情况下,不是为 deptIdFromGrid 变量选择一个值,而是每个迭代元素的值都附加到变量上。这在 struts one 中是一个完美的工作案例,并且 java pojo 类也没有引起任何我已经验证过的问题。(getter 和 setter 正确就位)
这是我看到的异常,在'class com.bofa.gems.controller.action.UserRoleAction'上设置'searchUser.deptIdFromGrid'时出现意外异常:错误设置表达式'searchUser.deptIdFromGrid'的值为['-1','-1 '、'-1'、'-1'、'-1'、''、'-1'、'-1'、]
代码片段
<select name="searchUser.deptIdFromGrid" id="departmentL<s:property value="%{#count.index}"/>" styleClass="smallselectfordept"
onKeyDown="javascript:keydownEvent()" onmouseover="onchangeShowTitle(this)"style="width: 250px">
<option value="-1" >Select One</option>
<s:iterator var="departmentL" value="deptListInGrid">
<s:if test="%{searchUser.deptId==#departmentL.id}">
<option
title='<s:property value="{#departmentL.value}"/>'
label='<s:property value="{#departmentL.value"/>'
value='<s:property value="{#departmentL.id"/>'
selected="selected"><s:property value="{#departmentL.value}" /></option>
</s:if>
<s:else>
<option
title='<s:property value="{#departmentL.value}"/>'
label='<s:property value="{#departmentL.value"/>'
value='<s:property value="{#departmentL.id"/>'
><s:property value="{#departmentL.value}" /></option>
</s:else>
</s:iterator>
</select>
</td>
</s:if>
<s:else>
<s:hidden name="searchUser.deptIdFromGrid" value=""></s:hidden>
<td class="generaltext"><span><s:property value="%{#users.deptName}"/></span></td>
</s:else>
Struts 1 等效代码
<html:select property="searchUser.deptIdFromGrid" styleId='<%="departmentL"+count%>' styleClass="smallselectfordept" onKeyDown="javascript:keydownEvent()" onmouseover="onchangeShowTitle(this)">
<html:option value="-1" >Select One</html:option>
<%-- <html:optionsCollection name="UserRoleForm" property="departmentList" label="value" value="id" /> --%>
<logic:iterate id="departmentL" name="UserRoleForm"
property="deptListInGrid">
<bean:define id="selectedId" name="departmentL" property="id" />
<logic:equal name="UserRoleForm" property="searchUser.deptId"
value="<%=(String)selectedId %>">
<option
title="<bean:write name="departmentL" property="value"/>"
label="<bean:write name="departmentL" property="value"/>"
value="<bean:write name="departmentL" property="id"/>"
selected="selected"><bean:write name="departmentL"
property="value" /></option>
</logic:equal>
<logic:notEqual name="UserRoleForm" property="searchUser.deptId"
value="<%=(String)selectedId %>">
<option
title="<bean:write name="departmentL" property="value"/>"
label="<bean:write name="departmentL" property="value"/>"
value="<bean:write name="departmentL" property="id"/>"><bean:write
name="departmentL" property="value" /></option>
</logic:notEqual>
</logic:iterate>
</html:select>
解决方案
推荐阅读
- java - 使用API查找两个日期之间的差异的方法
- java - 如何使 uiscrollable 查找 content-desc 而不是文本
- python - 如何使用 Python 保存日志文件?
- spring - 错误:“当前请求不是多部分请求”反应 axios 文件 + 数据提交
- html - 正确使用 spring.contextPath=/xyz 重定向到每个控制器映射
- python - 如何在插入语句中使用带有值的select语句,postgresql
- algorithm - 如何在容器之间平均分类加权物品?
- r - 根据先前小部件的选定选项显示动态生成的“selectizeInput”小部件的选定选项
- javascript - WP帖子更新时执行js
- manageiq - 使用来自外部应用程序的 REST API 登录 manageiq