我在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}
我在两个页面上都包含了核心标签库。
这是因为pgTitle变量是在页面范围内设置的。在此处检查(很抱歉,我无法为此获得正式文档)。
pgTitle
如果要进行此工作,则必须至少在请求范围内设置变量。要在请求范围内设置变量,请在scope上使用属性<c:set>:
scope
<c:set>
<c:set var="pgTitle" value="Welcome" scope="request" />
根据您的评论,在Web开发中,变量的范围很重要,因为它定义了变量的使用位置(类似于在类中声明为字段的变量和在方法中局部声明的变量)。JSP中有四个范围称为上下文:
更多信息:
这是完成我想做的正确方法吗?
如果有一个Servlet或另一个控制器处理要在请求中设置的属性(例如,@Controller从Spring MVC或JSF托管Bean),则在此处而不是直接在页面中设置属性。
@Controller
就个人而言,在Web应用程序上使用时,需要一些时间来获得经验并定义变量的最佳范围。基本示例:
String