我有这样的的welcome.jsp
<c:set var="pgTitle" value="Welcome"/>
<jsp:include page="/jsp/inc/head.jsp" />
而这head.jsp:
<title>Site Name - ${pgTitle}</title>
但该变量为空白,输出仅仅是
Site Name -
我已经看了很多文章,我想不通的问题是什么。 如果我赞同${pgTitle}
相同的welcome.jsp的其他地方,那么它输出的罚款。
我包括两个页面上的核心标签库。
这是因为pgTitle
变量在页面范围内设置。 检查它在这里 (抱歉,我不能得到这个官方文档)。
如果你想使这个工作,你必须至少设置请求范围的变量。 要设置您在请求范围变量,使用scope
上属性<c:set>
:
<c:set var="pgTitle" value="Welcome" scope="request" />
根据您的评论,在web开发中,变量的作用域重要,因为它定义了变量都可以使用(类似于声明为类字段和方法局部声明的变量的变量)。 有在JSP四个法域被称为方面:
- 页面范围(由处理PageContext中 )。 如果设置为当前页面属性变量只能达到。 这意味着,只有当前页面可以访问这些属性,包括页面不同的页面,因此他们无法访问这些属性。
- 请求范围(由处理的ServletRequest )。 如果设置为当前请求属性变量只能达到。 这意味着,在相同的请求可以访问这些属性来处理每一个页面。 重要提示 :由于重定向意味着一个新的请求/响应过程。 这意味着,如果你的要求设置属性并执行重定向,这些属性不会被设置为在新的请求属性。
- 会话范围(由处理的HttpSession )。 如果设置为在当前用户会话属性的变量只能达到。 这意味着,在相同的用户会话中使用,直到它们被删除或会话过期可以使用这些属性的每一页。
- 应用范围(由处理ServletContext中 )。 如果设置为当前上下文属性变量只能达到。 这意味着,在每一个会话属性的每一页都可以访问到这些变量,直到他们从SessionContext删除或Web应用程序取消部署。
更多信息:
这是完成什么,我试图做正确的方式?
如果有一个Servlet或其他控制器处理的请求设置的属性(例如@Controller
从Spring MVC的或JSF托管bean),然后直接设置该属性存在,而不是在你的页面。
就个人而言,它需要一些时间来赚取经验和对Web应用程序使用时定义变量的最佳范围。 基本的例子:
- 一的拆分
String
用逗号,以用于演示只会影响到当前视图,所以这可以在页面范围内进行设置。 - 错误和成功的消息,最适合在要求范围之内。 如果用户更新页面,他/她可能不能看到相同的消息,除非该数据重新处理。
- 用户信息如姓名,昵称和偏好可以在会话范围内进行设置。
- 如果有,显示国家的名单(即不应该在几天内改变),你可以存储这个列表中的应用范围。
一种方法是将变量传递给通过查询参数的包括:
<jsp:include page="/WEB-INF/views/partial.jsp?foo=${bar}" />
<jsp:include page="/WEB-INF/views/partial.jsp">
<jsp:param name="foo" value="${bar}" />
<jsp:param name="foo2" value="${bar2}" />
</jsp:include>
然后,您可以访问这些PARAMS用${param.foo}
另一个办法是使用自定义标签:
/WEB-INF/tags/head.tag
<%@ attribute name="title" %>
<head>
<title>${title}</title>
</head>
somePage.jsp
<%@ taglib prefix="layout" tagdir="/WEB-INF/tags" %>
<html>
<layout:head title="myRadTitle" />
<body></body>
<html/>
你必须设置变量是(至少) request
作用域。 你可以做ID如下:
<c:set var="pgTitle" value="Welcome" scope="request"/>
<jsp:include page="/jsp/inc/head.jsp" />
然后,在head.jsp
,可以输出这样的变量:
<c:out value="${requestScope.pgTitle}" />
文章来源: How to pass parameter to jsp:include via c:set? What are the scopes of the variables in JSP?