我的 jsp 有效吗?

Is my jsp valid?

我正在 struts2 应用程序中编写导航磁贴。基于 java 代码中的某些逻辑,我希望导航 link 与 'selected' class 一起显示。假设有 3 个 link,我目前在 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 代码将派生自 .jsp 文件,其中包含 struts2 if 语句以确定当前是否选择了 link:

<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% 确定替代方案更好,但在某些情况下,原始样式似乎不那么复杂。

如果有效,则有效,否则会出现 JSP 编译错误。

你的错误是认为 HTML 标签和 JSP 标签是等价的;他们不是。您不能嵌套 JSP 标签。嵌套 HTML 标签无关紧要:JSP 仅在服务器端重要,它只是一个模板。 JSP 不关心 HTML 个标签,只关心 JSP 个标签。

HTML 仅在客户端有效,JSP 标签到那时已经消失。

无关,但第一个示例基本上难以辨认。这些都应该包含在一个自定义标签中,用 JS 或其他任何东西处理,以减少混乱。