0

第三个属性可以取哪些值

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 中一次性设置所有application的属性。- 隐含地通过使用方法(可能是pageContext)或作为方法的副作用(可能是上下文- 这次也来自 servlet 内部)做其他事情?sessionpageContext

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

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

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

4

2 回答 2

0

As David has said above, if you need to access a value, you should set it to the broadest scope, rather than trying to reset it again — if you have set an attribute at the application scope, you have access to it everywhere & don't need to set it on the request. That would be redundant.

If you don't know which scope a variable is set on, you can use the findAttribute method on the context, which will start at page scope & move upwards through request, session & application scopes until it finds the attribute.

于 2013-07-06T13:47:32.473 回答
0

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

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

顺便说一句,它不是 PageContext。RESPONSE_SCOPE,但 PageContext。请求范围

于 2013-07-06T03:35:51.817 回答