3

我正在使用 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。

谢谢。

更新 -> 更多代码

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

4

1 回答 1

4

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

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

注意:listKey和的值listValue必须是您要填充的 的Object属性。listsj:select

id属性中设置的属性value应该是您的操作类中的一个属性,它带有您要设置的默认值。假设值为3,并且您有一个这样的选择列表

<select>
    <option value="1">Yellow</option>
    <option value="2">Black</option>
    <option value="3">Blue</option>
</select>

当页面加载时,选择将默认显示Blue。如果你这样做有问题,请告诉我。

于 2012-07-24T14:20:14.497 回答