的“操作”元素中的“作用域”属性有多少个可用值
除了“请求”和“ session ”以外的struts-config.xml文件?

<action name="loginform" path="/bkplogin" scope="?" type="org.springframework.web.struts.DelegatingActionProxy">

最佳答案

作用域属性只有两种可能的值:struts-config的DTD中所述请求 session

<!--
The name of a JSP bean scope within which such a form bean may be accessed.
-->
<!ENTITY % RequestScope "(request|session)">
...
...
<!ATTLIST action   scope    %RequestScope;  #IMPLIED>

请在此处查看DTD:
http://struts.apache.org/dtds/struts-config_1_3.dtd

或以下是DTD的更易阅读的文档:
http://struts.apache.org/1.x/struts-core/dtddoc/struts-config_1_3.dtd#action



好了,跨JSP页面的对象范围可以是:
  • 页面-只能从在其创建对象的同一JSP页面内访问对象;
  • 请求-使用请求范围创建的对象可以从为该请求提供服务的任何页面中访问;
  • session -可从属于同一 session 的页面访问对象(跨同一客户端的多个请求,并在 session 中保持状态,每个客户端具有自己的 session );
  • 应用程序-可以从应用程序中的任何页面访问此范围内的对象(所有用户在应用程序范围内共享相同的对象,所有用户共享一个对象)。

  • 现在,struts-config中的作用域指的是在哪里创建/查找ActionForm对象。一个ActionForm代表客户端HTML表单的服务器对象表示。

    具有具有应用程序范围的表单没有任何意义,因为它将是每个人的一种表单,我什至不认为这将是有用的。因此,该字段没有任何应用值(value)。

    现在,假设您具有页面范围。那将如何工作? Struts将RequestDispatcher.forward/redirect转到JSP文件,它如何将ActionForm保存在仍没有页面范围的页面的页面范围内,因为它还没有控制权?就像将值发送给方法一样,您尝试从方法外部直接在方法代码中创建局部变量,而不是发送方法参数。

    因此,只有两个有意义的值:请求 session 。如果您想要额外的东西,则必须自己进行管理。

    Struts是一个通用框架,它不涵盖所有可以想象或无法想象的案例,它涵盖了大多数常规用例场景,对于这些场景而言,您将只需要请求和 session 。

    关于java - struts-config.xml文件的action元素中的scope属性有多少个可用值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4713822/

    10-13 03:28