如何从其他文件中包含JSTL变量?

时间:2012-07-06 17:22:12

标签: jstl

我想要一个“常量”的JSTL文件,并在其他文件中引用它们。

e.g。

constants.jsp:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="colour" value="blue"/>
<c:set var="car">Audi</c:set>

其他档案:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:import url="constants.jsp"/>
<p>I drive an ${car} which is ${colour}</p>

上面的代码(很明显)不起作用。我怎样才能得到类似的东西?

如果我也可以使用名称空间,则可以获得奖励。

1 个答案:

答案 0 :(得分:4)

您可以使用include指令:

<%@include file="/constants.jsp" %>

或者你可以使用动态包含,但是变量必须存储在请求中,而不是页面范围:

<jsp:include page="/constants.jsp" />

<c:set var="colour" value="blue" scope="request"/>
<c:set var="car" scope="request">Audi</c:set>

但最好的方法可能是将所有这些常量放在一个对象中,并将该对象存储在servlet或过滤器的请求(或会话或应用程序)中:

private class Constants {

    private String color = "blue";
    private String car = "Audi";

    public String getColor() {
        return color;
    }

    public String getCar() {
        return car;
    }
}

...

request.setAttribute("constants", new Constants());

...

<p>I drive an ${constants.car} which is ${constants.color}</p>