从 Java 代码中注入 JSP EL and/or JSTL 标签

Injecting JSP EL and/or JSTL tags from Java code

我有 Java 类 用于 JSP 页面。 getAttr() returns 具有任意数量的 HTML 锚点元素的字符串,指向我的网络应用程序的本地 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 特定的。 JSTL/EL 从 Java 代码注入 return "<a href = \"<c:url value = \"...\"/>\">...</a>"; 不(也不应该)工作。

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

尝试在您的 Class 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";
    }
}