在Struts 2中创建导航链接

时间:2009-03-31 12:33:14

标签: struts2

有没有办法复制rails'“link-to-unless-current”?

IE中。如果我的导航中有一个链接列表,我想用不同的CSS样式标记当前页面(甚至是纯文本,而不是链接)?

现在我在我的动作类(getPage())中创建了一个方法,它返回一个我为每个动作分配的名称,并在构建我的导航时测试它...工作但不漂亮,我必须手动设置页面名称(无法以某种方式自动从上下文中获取它)。

使用Struts 2,Tiles,JSP + Struts taglibs。

1 个答案:

答案 0 :(得分:4)

要获取当前网址,您可以使用Url标记而不使用任何参数,操作等:

<s:url var="currenturl" includeParams="get" escapeAmp="false"/>

然后假设你构建你的导航Url:

<s:url var="url" action="someAction" escapeAmp="false">
    <s:param name="id" value="id"/>
</s:url>

然后,您可以使用普通的if标记来测试当前网址是否与您构建的网址匹配。

<s:if test="#url eq #currenturl">
</s:if>

例如,要更改类,可以对锚定义进行条件内联:

<a href="<s:property value="#url"/>" <s:if test="#url eq #currenturl">class="current"</s:if>>XXX</a>

如果您的网址中的参数对导航有意义,请使用includeParams =“get”,否则请将其排除并使用if,如下所示:

<s:if test="#url.startsWith(#currenturl)">