【问题标题】:is this the correct jsp/struts syntax?这是正确的 jsp/struts 语法吗?
【发布时间】:2012-03-20 14:52:39
【问题描述】:

我对此很陌生,我正在尝试查看域名是否与我指定的匹配。如果域不匹配生产那么我想添加 noindex 元,它是一个 JSP 页面 这是我的代码

<s:if test="%{!HttpServletRequest.getRequestUrl().containsIgnoreCase('www.example.com')}">
    <meta name="robots" content="noindex" />
</s:if>

我很困惑在这里使用什么正确的语法,在我正在编辑的文件中有类似的东西 &lt;c:choose&gt;&lt;c:when test="${!empty param.share_url}"&gt;

和类似的代码

<s:if test="%{sectionId == 'vehicles'}">

我的代码是否适合我想要做的事情?

【问题讨论】:

  • 在我看来更像是 Struts,而不是 JSTL
  • 好吧,那就是 struts 我不知道确切的正确名称是什么
  • 不要只是掩盖区别,两者是完全分开的。
  • 我不知道哪个是哪个,我只知道它是一个jsp文件并且该文件包含我上面列出的语法。我知道我写的代码不起作用,因为我在测试中没有看到元标记
  • %{} 语法是 Struts2 特定的 OGNL。 JSP 使用${} 语法,即EL。 JSTL 只是另一个 JSP 标签库。

标签: jsp struts2


【解决方案1】:

如果您正在使用 S2,我建议您继续使用 S2 标签,以便您可以使用 S2 的全部功能及其与 ONGL 和 Value-Stack 的绑定。

如果您想使用 JSTL,并且可以使用 JSTL,因为 S2 提供了开箱即用的 JSTL 支持,除非完全不需要,否则不要混合使用 ta 库。

第一部分

<s:if test="%{!HttpServletRequest.getRequestUrl().containsIgnoreCase('www.example.com')}">
    <meta name="robots" content="noindex" />
</s:if>

您无需玩弄HTTPServletRequest,而 S2 提供了一种访问请求、会话、应用程序范围对象的简洁方式。

这是我们倾向于在 JSP 中访问它们的方式

<s:property value="#request.myId" />

更详细的参考官方文档

【讨论】:

  • 显然我们已经将变量设置为域,所以我只是将该变量与 prod 字符串进行了比较,但感谢您的输入和努力
【解决方案2】:

我已经有一段时间没有做 struts 了,因为我投奔了 .net(抱歉),但我似乎记得你可以通过几种方式来做

  1. ${request.requestURI}
  2. &lt;s:property value="%{#context['com.opensymphony.xwork2.dispatcher.HttpServletRequest'].requestURI}"/&gt;

抱歉,如果这已经过时了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多