在Struts 2中是否有更好的方式将数据传输到视图?



我将属性添加到Action对象,并且在我的JSTL/JSP视图中,我在valueStack中读取这些操作属性。

我只是觉得不干净,如果我要添加一些数据到视图,我必须添加一个属性到我的动作。

这导致我的操作,数据和视图是耦合的。

有更好的方法吗?

class MyAction{
    int theDataSentToView1;
    String theDataSentToView2;
}
在JSP

:

echo myAction.theDataSentToView1;
....

在Struts2中,Action是MVC意义上的模型。因此,模型属性应该是可用的,以便与JSTL、EL、OGNL等一起使用。

视图中使用的所有这些表达式语言都在Struts2中的valueStack上操作,操作bean由框架放置在其顶部,因此您可以轻松地将数据耦合到valueStack

如果你不想在动作中使用它,你可以在valueStack的某个地方push/put它,所以它将从那里被访问。

但是你不应该这样做,因为框架有ModelDriven功能,可以在MVC的意义上用于模型而不是动作。

只需将您的属性从动作移动到模型对象。modelDriven拦截器将此对象压入valueStacktop

最新更新