这是因为pgTitle变量设置在页面范围内。检查它
here(抱歉,我无法获得官方文档)。
如果要使其工作,您必须至少在请求范围内设置变量。要在请求范围内设置变量,请使用< c:set> ;:上的scope属性:
根据您的评论,在Web开发中,变量的范围是重要的,因为它定义了可以使用变量的位置(类似于在类中声明为字段的变量和方法中本地声明的变量)。 JSP中有四个范围称为上下文:
>页面范围(由PageContext处理)。变量只能在当前页面中设置为属性。这意味着只有当前页面才能访问这些属性,包含的页面是不同的页面,所以他们无法访问这些属性。
>请求范围(由ServletRequest处理)。变量只能在当前请求中设置为属性。这意味着,在同一请求中处理的每个页面都可以访问这些属性。重要提示:重定向意味着一个新的请求/响应过程。这意味着,如果您在请求上设置属性并执行重定向,那么这些属性将不会被设置为新请求的属性。
>会话范围(由HttpSession处理)。变量只能在当前用户会话中设置为属性时才能达到。这意味着,在同一用户会话中使用的每个页面都可以使用这些属性,直到它们被删除或会话过期为止。
>申请范围(ServletContext处理)。变量只能在当前上下文中设置为属性。这意味着,每个会话属性的每个页面都可以访问这些变量,直到从SessionContext中删除或者Web应用程序被取消部署。
更多信息:
Is this the right way to accomplish what I am trying to do?
如果有一个Servlet或另一个控制器来处理在请求中设置的属性(例如,来自Spring MVC或JSF托管bean的@Controller),那么直接在页面中设置属性,而不是在页面中设置属性。
就个人而言,在Web应用程序使用时,需要一些时间才能获得经验并定义变量的最佳范围。基本例子:
>用逗号分隔字符串进行演示,将仅影响当前视图,因此可以在页面范围内进行设置。>错误和成功的消息最适合请求范围。如果用户更新页面,他/她可能不会看到相同的消息,除非数据被重新处理。>可以在会话范围内设置用户名,昵称和偏好设置。>如果您必须显示国家列表(几天内不应更改),则可以将此列表存储在应用程序范围内。