哪些值可以是
的第三个属性 javax.servlet.jsp.PageContext.setAttribute(String name, Object value, int scope)
可以带?
据我所知,这个属性是一个枚举,我所知道的可能值是PageContext.APPLICATION_SCOPE
,
PageContext.SESSION_SCOPE
,PageContext.RESPONSE_SCOPE
和PageContext.PAGE_SCOPE
。这是完整的价值观吗?
这是如何“阅读”
的问题和
http://docs.oracle.com/javaee/6/api/javax/servlet/jsp/PageContext.html
- 如果我没有遗漏任何东西,它们就不太具体了。
// =================================
编辑:扩展问:
有没有办法在JSP中同时设置所有application
,session
和pageContext
的属性。
- 隐式使用方法(可能是 pageContext )或作为方法的副作用
( context 也许 - 来自servlet,这次也可以做其他事情?)
据我所知,这四个范围(request
,context
,session
,pageContext
)中的每一个都可以拥有完全不同的属性集和值,
如果我想将属性传递给context
和session
,我必须分别调用他们的setAttribute()
。
// =====================
编辑:日食编辑讲述了某些事情。这可能是一个早期的问题。答案 0 :(得分:0)
此参数不是枚举,而是普通int
。 PageContext.APPLICATION_SCOPE等是PageContext中的常量(public static final int)变量。可以在以下链接中找到完整的值集:
我没有理由在不同的范围内设置相同的值。如果您需要一个全局值(对整个应用程序),您将使用应用程序范围不是吗?如果在不同的作用域中设置相同的内容,则需要在会话,请求和页面等限制较多的作用域中多次重置相同的值。
顺便说一下,它不是PageContext。 RESPONSE_SCOPE ,但是PageContext。 REQUEST_SCOPE 。
答案 1 :(得分:0)
正如David上面所说,如果你需要访问一个值,你应该将它设置为最广泛的范围,而不是试图再次重置它 - 如果你在应用程序范围设置了一个属性,你就可以访问它无处不在不需要在请求上设置它。这将是多余的。
如果您不知道设置变量的范围,可以在上下文中使用findAttribute
方法,该方法将从页面范围&向上移动请求,会话和&应用程序范围,直到找到该属性。