我有在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范围之外创建手动超链接至少是丑陋的,但我已经没有想法了。
答案 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";
}
}