【问题标题】:Nested Spring EL does not work嵌套的 Spring EL 不起作用
【发布时间】:2014-03-31 09:36:41
【问题描述】:

我在 bean id globalConstants 中有一个名为 var 的静态全局字符串常量。在我的 jsp 中,我可以通过 ${globalConstants.var} 来获取它的内容。现在我的 var 有一个如下所示的 url:

<a href="<spring:url value="/fan/foo.html"/>">Foo</a>

但是,标签没有被评估为正确的 url。但相反,整个标签都在那里。无论如何,我在 var 变量中的弹簧标签在调用它时会得到评估吗?具体来说,给定的 url 应该是这样的

 <a href="/abc/fan/foo.html">Foo</a>

【问题讨论】:

  • 你试过没有外引号吗?或者将其中一个引号对切换为单引号?
  • 都没有用。 仍然存在并且链接不起作用。它链接到浏览器地址栏上的 spring:url 内容
  • 不,不是。 2个不同的问题。我的更难!
  • 请说明你想要什么。我在您发布的 JSP sn-p 中没有看到任何 EL。发布您实际拥有的以及您希望它做什么。

标签: java spring jsp spring-mvc


【解决方案1】:

我假设你有类似的东西

public class Constants {
    private String var = "<a href=\"<spring:url value=\"/fan/foo.html\"/>\">Foo</a>";
    public String getVar() {
        return var;
    }
}

然后

model.addAttribute("globalConstants", new Constants());

${globalConstants.var}

无论如何,我在 var 变量中的 spring 标记在调用它时会得到评估

不,这里只有一个组件在起作用:表达式语言解析器。它将看到${..} 并执行适当的逻辑来解析表达式并将String 结果直接写入HttpServletResponse OutputStream

你根本不能做你所要求的,你不应该做的。将视图元素和 Java 代码分开(除非 Java 代码用于写入响应)。

如果您需要像全球持有人这样的东西

<a href="<spring:url value="/fan/foo.html"/>">Foo</a>

把它放在它自己的 JSP 中,import 它放在你需要的每个 JSP 中。

【讨论】:

    【解决方案2】:

    我相信你已经忘记导入 taglib 了:

    <%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
    

    那么下面的行应该可以工作:

     <a href='<spring:url value="/fan/foo.html"/>'>Foo</a>
    

    【讨论】:

    • 不是这样的。锚点是字符串变量的一部分。字符串变量的内容是这样的 ${globalConstants.var} 。但是,变量中的 url:spring 标记未得到评估。因此,我无法获得正确的链接
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2021-02-28
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2012-11-02
    • 2015-10-02
    相关资源
    最近更新 更多