session中存储Map集合:roleList,Action中存储user对象,其属性有role
现在要实现 user.role.roleId等于集合遍历的Rold就让该角色处于选中状态
上面的实现代码中,没有进if判断语句,直接执行else语句。
求解,请指点!实在是没有积分,请帮忙。
不了解你的Map中的结构,试试这样吧:
[code="xml"]
<s:if test="user.role.roleId == value.RoleId">
<option value="<s:property value='value.RoleId'/>" selected="selected">
<s:property value="value.RoleName" />
</option>
</s:if>
<s:else>
<option value="<s:property value='value.RoleId'/>">
<s:property value="value.RoleName" />
</option>
</s:else>
</s:iterator>
</select>[/code]
[b]给你个我的例子:
[/b]
[code="xml"]
/s:if
/s:iterator[/code]
[b]session 中的roleList:[/b]
[code="java"]Map roleList = new HashMap();
roleList.put("admin",1);
roleList.put("normal",2);
roleList.put("guest",3);
ActionContext.getContext().getSession().put("roleList", roleList);[/code]
[b]Action中的user:[/b]
[code="java"]user.setAge(13);
user.setName("xiaolongfeixiang");
user.setRoleid(2);[/code]
[b]
输出结果:[/b]
[quote]normal 2 [/quote]
[b][quote]这样可以实现,不了解这#号的作用,谢谢 [/quote]
#是OGNL的标识符:
#session.roleList --> 取得session中的 roleList
如果不写#号的话,值是在OGNL context的root stack中寻找的。
[color=blue]
PS: Struts2的OGNL context(详细的参考Struts2文档)
1、requet Stack (存放request范围的参数)
2、session Stack(存放session范围的参数)
3、application Stack(存放application范围的参数)
4、root Stack(存放Action 等范围的参数)
5、自定应的stack[/color]
[/b]