我有在 JSP 页面上使用的 Java 类。 getAttr()
返回一个字符串,其中包含任意数量的 HTML anchor 元素,这些元素指向我的 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>
这样的东西来解释。 ,但这是 JSP 特有的。来自 Java 代码的 JSTL/EL 注入(inject),如 return "<a href = \"<c:url value = \"...\"/>\">...</a>";
不起作用(也不应该)。
如何在不暴露 Java 类的内部结构的情况下支持非默认上下文?在 JSP 范围之外手动创建超链接至少很丑陋,但我已经没有主意了。
最佳答案
尝试在您的类 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";
}
}
关于java - 从 Java 代码注入(inject) JSP EL 和/或 JSTL 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33434971/