设置sj:select的默认值

时间:2012-07-23 20:48:39

标签: jquery struts2

我正在使用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类中的值。然后,用户可以更改值或保持原样。

1 个答案:

答案 0 :(得分:4)

试试这个。我没有测试过,但我认为它应该可行:

<sj:select name="list" href="%{getListofObjects}" list="objects" listKey="id" listValue="name" value="%{id}"/>

注意: listKeylistValue的值必须是您填充{{1}的Objectlist的属性与。

sj:select属性中设置的id属性应该是您的操作类中的属性,该属性包含您要设置的默认值。假设值为value,您有一个像这样的选择列表

3

页面加载时,默认情况下会显示选择<select> <option value="1">Yellow</option> <option value="2">Black</option> <option value="3">Blue</option> </select> 。 如果你有这样的问题,请告诉我。