我正在struts2应用程序中编写导航磁贴。根据java代码中的一些逻辑,我想要一个导航链接来显示“selected”类。让我们说有3个链接,我目前在页面B上。请参阅下面的html示例:
<nav>
<a href="urlA">Page A</a>
<a class="selected" href="urlB">Page B</a>
<a href="urlC">Page C</a>
</nav>
此HTML代码将从带有struts2 if语句的.jsp文件派生,以确定当前是否选择了该链接:
<a
<s:if test="%{navigation == 'pageA'}">
class="selected"
</s:if>
href="linkA">PageA</a>
<a
<s:if test="%{navigation == 'pageA'}">
class="selected"
</s:if>
href="linkA">PageA</a>
<a
<s:if test="%{navigation == 'pageA'}">
class="selected"
</s:if>
href="linkA">PageA</a>
我的问题是 - 这在技术上是一个有效的jsp吗?它工作并产生我想要的结果。它绝对不是有效的xml,但是jsp文件必须验证为xml,并且任何人都可以想到我可能遇到的任何问题。
另一种方法是写:
<s:if test="%{navigation == 'pageB'}">
<a class="selected" href="urlB">Page B</a>
</s:if>
<s:else>
<a href="urlB">Page B</a>
</s:else>
作为一个例子,我100%肯定替代方案更好,但在某些情况下,原始风格似乎不那么复杂。
答案 0 :(得分:1)
如果有效,则有效,否则会出现JSP编译错误。
你的错误是认为HTML标签和JSP标签是等价的;他们不是。您无法嵌套JSP标记。嵌套HTML标记是不相关的:JSP只在服务器端有用,它只是一个模板。 JSP不关心HTML标签,只关心JSP标签。
HTML仅在客户端方面很重要,到那时JSP标签已经消失。
无关,但第一个例子基本上是难以辨认的。这应该全部包含在自定义标签中,用JS或其他任何方式处理,以减少这种混乱。