我正在使用struts2-jquery插件,我需要为sj:select
下拉窗口小部件设置默认值。
窗口小部件当前工作,将显示所有适当的值(来自地图,其中值是要在菜单上显示的值)。它是从处理适当方法的动作类中调用的。
<s:url id="menu" action="getListofObjects" />
<sj:select name="list" href="%{getListofObjects}" list="objects"/>
让我们说对象是蓝色的,它的ID是3.目前我有一个.jsp
页面,其中列出了所有对象。如果我点击'3'它会调用一个动作,它会找到对象(蓝色)并在动作中保存'3'和蓝色。然后,它调用一个新的.jsp
页面,显示有关该对象的信息。
我想要的是一个sj:select
下拉菜单,它默认为我选择的对象(在这种情况下,颜色为蓝色),但点击后会显示其余的对象。当我使用value="%{object}"
调用窗口小部件时,我将显示两次相同的对象。
有人有解决方案吗?我见过人们使用jQuery来擦除重复的下拉列表,但我想知道是否有一个真正的解决方案,我可以根据下拉菜单返回的内容设置默认值。
另外,我正在使用sj:select
因为我有一些双/三选择方法所以我无法切换到s:select。
感谢。
更新 - &gt;更多代码
的Page1.jsp
<s:iterator value="penList">
<tr class="detail">
<td class="detail">
<s:url action="penUpdate" var="urlTag">
<s:param name="penId"><s:property value="penId"/></s:param></s:url>
<a href="<s:property value="#urlTag" />"><s:property value="penId" /></a></td>
penUpdateAction.java
public String execute(){
getPen();
return Action.SUCCESS;
}
public PenVO getPen(){
penVO = penService.searchPens(penId);
name = penVO.getName();
id = penVO.getPenId();
return penVO;
}
Page1调用调用page2的penUpdateAction
Page2.jsp
<s:url id="nameList" action="getNames" />
<sj:select name="name" href="%{nameList}" list="names" onChangeTopics="reloadsecondlist"/>
这是一个显示所有可用名称的下拉菜单。它正在工作,但我希望它默认为存储在penUpdateAction类中的值。然后,用户可以更改值或保持原样。
答案 0 :(得分:4)
试试这个。我没有测试过,但我认为它应该可行:
<sj:select name="list" href="%{getListofObjects}" list="objects" listKey="id" listValue="name" value="%{id}"/>
注意: listKey
和listValue
的值必须是您填充{{1}的Object
中list
的属性与。
sj:select
属性中设置的id
属性应该是您的操作类中的属性,该属性包含您要设置的默认值。假设值为value
,您有一个像这样的选择列表
3
页面加载时,默认情况下会显示选择<select>
<option value="1">Yellow</option>
<option value="2">Black</option>
<option value="3">Blue</option>
</select>
。
如果你有这样的问题,请告诉我。