我将属性添加到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
拦截器将此对象压入valueStack
的top
。