我需要能够在一个页面上多次使用相同的下拉列表。我第一次在选择标签上使用“列表”时,它工作正常。相同的列表不会填充我使用它的第二个选择标签。这是详细信息。
在动作类中,我填充了包含填充选择标记所需的值的 ArrayList。
setNames(new SomeDAO().getNames());
在 JSP 中
<s:select list="names"
id="nameList"
listKey="nameId"
listValue="userName"
/>
这个选择列表填充得很好。如果我在同一页面上使用以下选择标签(使用相同的列表),则无法打印。
<s:select list="names"
id="rName"
listKey="nameId"
listValue="userName" />
如果我用 #{'test':'test'} (硬编码列表)替换上面的“列表”,则标签显示正常。看起来我在 Action 中设置的属性在第一次使用后被清除。这是发生了什么还是我做错了什么?我收到“IllegalStateException:响应已提交”错误
编辑1:在处理JSP页面的action方法中使用了setNames()。这是一个简单的getter函数。在 JSP 中,这就是我所拥有的。
<tr>
<td align="left" class="td-plain">Add New:</td>
<td class="td-plain">
<s:select list="names"
id="addNameID"
name="addUserNameID"
listKey="reinsId"
listValue="reinsName"
headerKey=""
headerValue="--User Name--"
/>
</td>
<td class="td-plain"><input id="addTreatyNumber" type="text" /></td>
<td class="td-plain"><input id="addReinsPercentage" type="text" /></td>
<td class="td-plain"><input id="addFlatDollarRetentionAmt" type="text" /></td>
<td class="td-plain">
<%if(finance){ %>
<input type="button" class="greyButton" value="Add" onclick="addReinsInfo()"/>
<%}else{ %>
None
<%} %>
</td>
</tr>
然后在那个页面上,我有
<tr id='<s:property value="caseGroupId"/>:<s:property value="treatyId"/>'>
<td class="td-plain"><input type='checkbox' id='<s:property value="caseGroupId"/>:<s:property value="treatyId"/>'/></td>
<td class="td-plain">
<s:select list="names"
id="rName"
name="dName"
listKey="reinsId"
listValue="reinsName"
headerKey=""
headerValue="--User Name--"
/>
</td>
<td class="td-plain_"><s:textfield id="tNumber" value="%{treatyNumber}"/></td>
<td class="td-plain_"><s:textfield id="tPercentage" value="%{reinspercentage}"/></td>
<td class="td-plain_"><s:textfield id="rAmount" value="%{flatDollarRetentionAmt}"/></td>
<td class="td-plain"><input type="button" value="Delete" class="greyButton"/></td>
</tr>
如果我将第二个标签中的“列表”更改为
list="#{'Test':'Test'}"
标签显示正常。如果我可以提供任何进一步的信息,请告诉我。
编辑 2:我能够通过将下拉列表值设置为会话来使其工作。