从Java代码中注入JSP EL和/或JSTL标记

时间:2015-10-30 11:30:57

标签: java jsp jstl el

我有在JSP页面上使用的Java类。 getAttr()返回一个字符串,其中包含任意数量的HTML锚元素,这些元素通向我的Web应用程序本地的URL:

public class C {
    public String getAttr() {
        return "foo <a href = \"/index.html\">bar</a> baz";
    }
}

<c:set var = "c" value = "..."/>
${c.attr}

只要使用默认上下文(/),一切都很好。非默认上下文可以通过使用类似<a href = "<c:url value = "..."/>">...</a>的smth来解释,但这是特定于JSP的。来自return "<a href = \"<c:url value = \"...\"/>\">...</a>";之类的Java代码的JSTL / EL注入不会(并且不应该)工作。

如何在不暴露Java类内部的情况下支持非默认上下文?在JSP范围之外创建手动超链接至少是丑陋的,但我已经没有想法了。

1 个答案:

答案 0 :(得分:1)

尝试在C类中获取HttpServletRequest:

public class C {

    private HttpServletRequest request;
    //initialize request in a constructor

    public String getAttr() {
        return "foo <a href = \""+request.getContextPath()+"/index.html\">bar</a> baz";
    }
}