我正在尝试使用 struts2 url 标签创建一个动态菜单栏。我从 webservice 获得了菜单列表,并尝试为每个菜单生成相应的 URL。我试过这段代码
<s:iterator value="roleMenus" id="child">
<s:if test="parentCode == #parent.childCode">
<s:if test="childCode != #parent.childCode">
<c:set var="link"><s:property value='menuLink'/></c:set>
<% menulink = (String)pageContext.getAttribute("link");
System.out.println(menulink);%>
<li><a id='<s:property value="menuLink"/>' name="menulink" href="<s:url action='xxxxx'/>"><s:property value="menuName"/></a></li>
</s:if>
</s:if>
在 scriptlet 中传递 Action 属性值
<%=menuLink%>
或 JSTL 变量
${link}
但它会引发异常
According to TLD or attribute directive in tag file, attribute "[action]" does not accept any expressions.
所以我想这不能在 Action 属性中使用任何类型的动态表达式来完成。
我正在考虑在调用 s:url 标记时覆盖生成 URL 的方法,但我不知道该怎么做。它在 IBM Portal 中生成这样的 url:
/wps/myportal/!ut/p/b1/jZDbToNAFEW_pR9gzhmG6-OEyMVhUGCowAsh2BiQS6yI0q-X9qkm1va87WSt7J0DBeTE1C2dWhrVIYNiqObmtZqacai6Yy70MmSpw9mTio9oOujHWkKpESnoHoX8HEBCcAU8LVWEUNZ4m2-7zFONANEMXA195qWxFVGKjF7zn6H4jfyx4AT8V3EC8MIxhNAb-x3kK2Zc3GIiZHOz-4LtMO779XUSMlTLpF3GT56ME3_J94ttvi_p24T1HEoctu1yCKRNs28tFtI2Hg6ilC2JCLO7KKxbkWA_obgj3Knvmctn7n9soC86x_JbNffZ5gdG203G/dl4/d5/L0lDU0NtbUEhL3dPb0JKaVVNcHJDSy80RzNhRFVRZy9aN19OQVVGS0FQNDBPMDhGMElSNVMzMzdRMjA4MC8lMHZpZXclMEFwcExvZw!!/
有没有人对此有任何想法?任何帮助将不胜感激。