首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么模型驱动的操作比对象支持的bean属性更受欢迎

为什么模型驱动的操作比对象支持的bean属性更受欢迎
EN

Stack Overflow用户
提问于 2010-11-18 19:43:22
回答 2查看 4.3K关注 0票数 1

我正在从struts-2一书中学习struts2。他们说,对于将数据传输到对象上,模型驱动的操作比对象支持的bean属性更受欢迎。

some1能解释一下为什么他们这么说吗?

原因是否与需要在视图层中提及引用名称有关

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-19 01:23:59

在处理多个属性的情况下,本书主张使用对象来保存这些属性,而不是将它们直接放在操作上,以使事情变得更容易。考虑以下示例:

代码语言:javascript
复制
public class CreateNewWidgetAction extends ActionSupport {
    private String property1;
    private String property2;
    private Long property3;
    ...

    public String execute() throws Exception {
        Widget widget = new Widget();
        // set properties on widget
    }

    // getters and setters for properties here
}

public class CreateNewWidgetAction extends ActionSupport {
    private Widget widget;

    public String execute() throws Exception {
        // sub properties for widget were already set, less work to do here
    }

    // getter and setter for widget here (or the
    // getModel method if you are using the Model Driven approach)
}

在第二个示例中,我们直接在小部件上设置属性(假设小部件有property1、property2和property3)。

希望您能在处理大量属性的示例中看到这将如何简化您的代码。

更新:如果您选择实现ModelDriven,那么您将在表单中引用上面的属性,如property1property2property3等。此外,由于您的操作是由单个模型驱动的,因此所有表单参数都被视为该模型的子级。

如果您选择不实现ModelDriven,那么您可以在表单中引用上面的属性,如widget.property1widget.property2widget.property3等。这种方法的好处是,您可以在操作上拥有与小部件上的属性不对应的其他属性。

除此之外,没有什么不同。事实上,这本书甚至说了这么多:

与对象支持的JavaBeans属性一样,ModelDriven操作也允许我们使用复杂的

对象来接收数据。这两种方法之间的差异很小,选择其中一种方法不会产生任何功能上的后果。

详细说明: Struts 2 in Action,第3章。使用Struts 2 actions > Transferring Pg -Pg。62

票数 6
EN

Stack Overflow用户

发布于 2010-11-23 19:57:22

如果你有嵌套属性,那么模型驱动会更好,例如,如果你有user bean,它在jsp端有name属性den,你必须做一些像user.name这样的事情,这样OGNL才能发现你指向的是用户对象,并且在那个name属性里面。

在模型驱动接口的情况下,当一个操作的请求到来时,该接口将把bean对象放在值堆栈的顶部,因为该bean位于值堆栈的顶部,所以您不需要在jsp中执行类似user.name的操作。

我希望它能回答你的问题

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4214368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档