0

有什么方法可以复制 Rails 的“链接到除非电流”吗?

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

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

使用 Struts 2、Tiles、JSP + Struts 标签库。

4

1 回答 1

4

要获取当前 url,您可以使用不带任何参数、操作等的 Url 标签:

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

然后假设您构建导航网址,例如:

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

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

<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>

如果您的 URL 中的参数对导航有意义,则使用 includeParams="get" 否则排除它并使用 if like:

<s:if test="#url.startsWith(#currenturl)">
于 2009-07-07T21:41:39.097 回答