【问题标题】:jsp scopes of PagesContextPagesContext的jsp范围
【发布时间】:2013-07-04 04:03:59
【问题描述】:

第三个属性可以取哪些值

javax.servlet.jsp.PageContext.setAttribute(String name, Object value, int scope)可以带吗?

据我所知,这个属性是一个枚举,我知道的可能值为PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPEPageContext.RESPONSE_SCOPEPageContext.PAGE_SCOPE。这是完整的价值观吗?

这是一个关于如何“阅读”的问题

http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/JspContext.html#setAttribute%28java.lang.String,%20java.lang.Object,%20int%29

http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/PageContext.html

-- 如果我没有遗漏任何内容,它们就不会太具体。

//==================================

编辑:扩展 Q:

有没有办法在 JSP 中同时设置所有 applicationsessionpageContext 的属性。 -- 隐含地使用方法(可能是 pageContext 的方法)或作为方法的副作用 (context 可能——这次也是在 servlet 中)做其他事情?

据我所知,这 4 个作用域(requestcontextsessionpageContext)中的每一个都可以具有完全不同的属性集和值, 如果我想将属性传递给contextsession,我必须分别调用它们的setAttribute()

//=======================

编辑:eclipse 编辑器正在讲述某些事情。这可能是一个早期的 Q。

【问题讨论】:

  • 我会为你准备一个 java Q 给你,保证。 :)

标签: jsp


【解决方案1】:

这个参数不是枚举,而是一个普通的int。 PageContext.APPLICATION_SCOPE 等是 PageContext 内部的常量(public static final int)变量。完整的值集可以在这些链接中找到:

我认为没有理由在不同的范围内设置相同的值。如果您需要一个全局值(对整个应用程序),您将使用应用程序范围,不是吗?如果你在不同的范围内设置相同的东西,你将需要在会话、请求和页面等更严格的范围内多次重置相同的值。

对了,不是 PageContext.RESPONSE_SCOPE,而是 PageContext.REQUEST_SCOPE

【讨论】:

  • 用一只“手”处理所有这些是我寻找一种万能方法的原因。
【解决方案2】:

正如大卫上面所说,如果你需要访问一个值,你应该将它设置为最广泛的范围,而不是尝试再次重置它——如果你在应用程序范围设置了一个属性,你就可以访问它无处不在,无需根据请求进行设置。那将是多余的。

如果您不知道变量设置在哪个范围内,您可以在上下文中使用findAttribute 方法,该方法将从页面范围开始并向上移动通过请求、会话和应用程序范围,直到找到属性.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多