java - 从 Java 代码注入(inject) JSP EL 和/或 JSTL 标记

标签 java jsp jstl el

我有在 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/

相关文章:

java - 配置其他库以在 JSP (Tomcat) 中使用

java - Spring Controller 获取空对象

java - 如何从 javascript 文件访问 Web 应用程序上下文?

javascript - 我想知道如何在 jsp servlet web 项目上使用 ajax 和 jquery 获得响应和发布响应

html - 如何为 HTML 中的每个开关分配不同的值

java - JSTL foreach for list in 列表

java - 如何创建开发/调试和生产设置

java - Autowiring 的 vaadin 组件获取索引 -1

java - Selenium webdriver 错误无法在(bamboo)上找到元素

java - 嵌入式 XSD 中的 JAXB 绑定(bind)