嵌套的Spring EL不起作用

时间:2014-03-31 09:36:42

标签: java spring jsp spring-mvc

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

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

但是,标记不会被评估为正确的URL。但相反,整个标签就在那里。无论如何我的 var 变量中的spring标签在调用时会被评估吗?具体来说,给定的URL应该是这样的

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

2 个答案:

答案 0 :(得分:0)

我相信您忘记导入taglib,如:

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

然后下面的行应该工作:

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

答案 1 :(得分:0)

我假设你有像

这样的东西
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中。