action mapping中的attribute 属性到底是干什么用的, 很早以前一直不太了解,今天突然又想到了这个问题,感觉不能再扔一边不管了, 一定要解决它.
这是在网上查到的关于attribute的解释.
1)应用前提,attribute只有在设置了name后才有意义。
2)attribute可以实现对象的重用,即如果设置了attribute属性,在创建actionform是,会先去查找相应的scope中是否有此对象,如果有,则重用,否则创建新的对象。
3)当你将创建的acitonForm保存到相应的scope中时,你想用一个更有意义的名字来访问它时,它就有意义了。
可是,看到"一个更有意义的名字的时候", 我好像有点理解了
<action
attribute="newLoginForm"
name="loginForm"
type="loginAction"
scope="request"
path="/login">
在struts实例化actionform的时候,struts是根据attribute的值来查找并创建actionform,有两种情况:如果已经存在,那么从内存中取回;如果第一次实例化,那么创建,并放入内存。
org.apache.struts.util.RequestUtils中的源代码
public static Actionform createActionform(
HttpServletRequest request,
ActionMapping mapping,
ModuleConfig moduleConfig,
ActionServlet servlet) {
............
............
String attribute = mapping.getAttribute();
......
Actionform instance = null;
HttpSession session = null;
if ("request".equals(mapping.getScope())) {
instance = (Actionform) request.getAttribute(attribute);
} else {
session = request.getSession();
instance = (Actionform) session.getAttribute(attribute);
}
................
................
}
如果没有配置attribute属性的话, struts才会从name属性里读出要创建的formbean 的名字,并创建一下实例,看下边的源代码就知道了, 呵呵.
org.apache.struts.config.ActionConfig
protected String attribute = null;
public String getAttribute() {
//就是这里了.
if (this.attribute == null) {
return (this.name);
} else {
return (this.attribute);
}
}
public void setAttribute(String attribute) {
if (configured) {
throw new IllegalStateException("Configuration is frozen");
}
this.attribute = attribute;
}
分享到:
相关推荐
或者是在 Action 的定义中,name 或 attribute 属性指定的 ActionForm 不存在。 3. “Cannot find bean XXX in any scope” 这个错误通常发生在 Action 里一般会 request.setAttribute() 一些对象,然后在转向的 ...
- **异常描述**:在 Struts 配置文件 `struts-config.xml` 中定义了一个 ActionForm,但 `type` 属性指定的类不存在或者在 Action 的定义中,`name` 或 `attribute` 属性指定的 ActionForm 不存在。 - **解决方案**...
When mapping from an ER model to a relational model, a strong entity is mapped into a (a) table (b) row (c) column (d) key Correct answer is (a) 10. Which of the following is true about ...
1. **检查配置文件**:确保 `struts-config.xml` 文件中的 ActionForm 类型指定正确,即 `<action-mappings>` 中的 `type` 属性应指向正确的 ActionForm 类。 2. **确认对象存储**:确保在 Action 中通过 `request....
下面让我们来做一个Velocity模板输出的例子,首先在classes/struts.xml中新建一个Action映射(Mapping),将其result类型设为velocity,如以下代码所示: <action name="VMHelloWorld" class="tutorial.HelloWorld">...
-- Action Mapping --> <action path="/testAction" type="com.example.TestAction" name="testForm"> </action> ``` 在Action中,可以通过返回`testPage`定义名来调用对应的Tiles页面。 5. **TestStruts1...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // ... 业务逻辑 ... TilesUtil.putAttribute(request,...
在Struts的Action中,我们可以通过`ActionForward`来指定对应的Tiles定义,例如: ```java public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, ...
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { // 业务逻辑处理 boolean success = true; if ...
这通常是因为在 `struts-config.xml` 文件中配置的 `<action>` 元素中的 `type` 属性值不正确,或者该 ActionForm 在实际执行过程中并未被放入请求作用域中。 **解决方案:** 1. **检查配置文件**:确保 `struts-...
Asp.net MVC comes with built in Authorization filter attribute that you can use on your Controller and Action to define the role that can access corresponding Controller or Action. This approach will ...
Cannot retrieve mapping for action XXX.jsp **错误描述**:当Struts无法根据指定的action路径找到对应的映射时,会抛出此异常。通常是因为在`struts-config.xml`中未正确配置Action映射。 **解决方法**: - ...
### Struts中html:errors标签的使用详解 #### 一、引言 ...在实际项目开发过程中,结合Struts配置文件、JSP页面以及ActionForm和Action中的逻辑控制,可以构建出既符合业务需求又具有良好用户体验的应用系统。
4. **使用Tiles定向**:在Action类中,或者在Struts的ActionForward中指定Tiles定义来决定哪个Tile应该被显示。例如: ```java return mapping.findForward("baseLayout"); ``` 或者在`struts-config.xml`中: ...
- 购物车模块:购物车的增删改查,可能涉及到会话范围的属性(session-scoped attribute)来保存购物车信息。 - 订单模块:订单创建、支付、状态跟踪,涉及订单实体、支付接口集成(如支付宝、微信支付)等。 - ...
- **Attribute**:设置Action关联的ActionForm在请求或会话范围内的键名。 - **ClassName**:指定Action类的全限定名,默认为`org.apache.struts.action.ActionMapping`。 - **Forward**:指定转发路径。 - **...
在这个例子中,我们创建了一个名为`demo`的包,并定义了一个名为`test`的Action。 ```xml <action name="test" class="com.sun.action.TestAction"> <result name="success" type="tiles">loginpage </action...
<action attribute="entryinfForm" name="entryinfForm" path="/entryinf" scope="request" parameter="method" type="com.ylb.action.EntryinfAction"> </action> </action-mappings> ``` #### 四、URL ...
<action path="/editSubscription" type="org.apache.struts.webapp.example.EditSubscriptionAction" attribute="subscriptionForm" scope="request" rights="system.user" validate="false"> </action> ``` ...