java set 作用域_关于Java:如何通过c:set将参数传递给jsp:include? JSP中变量的作用域是什么?...

我在welcome.jsp上有这个

而在head.jsp中:

Site Name - ${pgTitle}

但是变量为空,输出仅为

Site Name -

我已经阅读了许多文章,但我无法弄清楚问题出在哪里。 如果我在同一welcome.jsp中的其他地方回显${pgTitle},则输出正常。

我在两个页面上都包含了核心标签库。

这是因为pgTitle变量是在页面范围内设置的。在这里检查(很抱歉,我无法获得官方文档)。

如果要进行此工作,则必须至少在请求范围内设置变量。要在请求范围内设置变量,请使用上的scope属性:

根据您的评论,在Web开发中,变量的范围很重要,因为它定义了变量的使用位置(类似于在类中声明为字段的变量和在方法中局部声明的变量)。 JSP中有四个范围称为上下文:

页面范围(由PageContext处理)。仅当在当前页面中将其设置为属性时,才能访问变量。这意味着,只有当前页面可以访问这些属性,包含的页面是不同的页面,因此它们不能访问这些属性。

请求范围(由ServletRequest处理)。仅当在当前请求中将其设置为属性时,才能访问变量。这意味着,在同一请求中处理的每个页面都可以访问这些属性。重要说明:重定向表示新的请求/响应过程。这意味着,如果您在请求上设置属性并执行重定向,则这些属性将不会被设置为新请求上的属性。

会话范围(由HttpSession处理)。仅当在当前用户会话中将其设置为属性时,才能访问变量。这意味着,在同一用户会话中使用的每个页面都可以使用这些属性,直到它们被删除或会话过期为止。

应用程序范围(由ServletContext处理)。仅当在当前上下文中设置为属性时,才能访问变量。这意味着,每个会话属性上的每个页面都可以访问这些变量,直到将它们从SessionContext中删除或取消部署Web应用程序为止。

更多信息:

JSP中有哪些不同的作用域?

Is this the right way to accomplish what I am trying to do?

如果有一个Servlet或另一个控制器处理要在请求中设置的属性(例如,来自Spring MVC或JSF托管Bean的@Controller),则在此处而不是直接在页面中设置属性。

就个人而言,在Web应用程序上使用时,需要一些时间来获得经验并定义变量的最佳范围。基本示例:

出于演示目的,用逗号分隔String只会影响当前视图,因此可以在页面范围内设置。

错误消息和成功消息最适合请求范围。如果用户更新页面,则除非重新处理数据,否则他/她可能不能看到相同的消息。

可以在会话范围内设置用户信息的名称,昵称和首选项。

如果必须显示国家列表(几天之内不会更改),则可以将此列表存储在应用程序范围内。

实际上,这确实起作用。 我可以要求对此进行更详细的技术说明吗? 为什么jsp:include无法访问父级变量集? 最后一个问题:这是完成我想做的正确方法吗?

@vcardillo答案已更新。

超级有帮助。 感谢您抽出宝贵时间提供这些详细信息!

@vcardillo,欢迎您。

@LuiggiMendoza在句子" JS中有四个范围称为上下文:"中有一个小的错字:-应该有JSP而不是JS。 我想了一下,突然之间我们在谈论JavaScript :-)

@saberduck谢谢,打错了。

一种方法是通过查询参数将变量传递到包含:

然后,您可以使用${param.foo}访问这些参数

另一种方法是使用自定义标签:

/WEB-INF/tags/head.tag

${title}

somePage.jsp

您必须将变量设置为(至少)request范围。您可以按照以下步骤执行ID:

然后,在head.jsp中,您可以像这样输出变量:

无需添加requestScope,因为${}已经在所有合并范围属性中搜索了变量。

它不是必需的,但更清楚。 :)

您可以使用和的组合来完成此操作。

somePage.jsp

header.jsp

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值