これをダウンロードして実行してください。少し面倒でもやってみる価値はあると思います。
アクションクラスのexecuteメソッドで、beanを返すメソッドでbeanをセットすると、JSPでModeldrivenが動かない(動かない<s:property "someField" />
のでbeanのインスタンス名をこのよう に打ち込む<s:property "myBean.someField" />
)。
ただし、Bean のフィールド値を設定すると、Modeldriven が機能します。
あなたが私を信じていないかもしれませんし、私が間違ったことをしたと思っているかもしれません. しかし、それは真実ではありません!やってみなよ..
public class DefaultClass extends ActionSupport implements ModelDriven<TestBean> {
TestBean test = new TestBean();
DAO db = DAO.getInstance();
public String access() throws Exception {
//Beans setter doesn't work!
setTest( db.getTest() );
return SUCCESS;
}
public String access2() throws Exception {
//Field setter works!
test.setA(db.getA());
test.setB(db.getB());
return SUCCESS;
}
何を見つけたのかわかりませんでした。だから私はこの質問をします。そして、私自身の答えとして、Bean を値スタックにプッシュすると、モデル駆動型が機能します。
なぜこれについて疑問がないのだろうか。深刻な問題だと思います。