私は疑問を持っています。Struts2Modeldriven
インターフェースのしくみ。私のアプリケーションでは、単一のフォームに使用しました。そして、セッターとゲッターをフォーム名と同じように配置しました。ModelDriven
セッターとゲッターで複数のオブジェクトを配置することは可能ですか?私がそのように配置した場合、それはどのように認識されますか?
3 に答える
ModelDriven
インターフェイスを実装するアクションgetModel()
は、アクションのモデルを表すオブジェクトを返すメソッドを提供する必要があります。アクションに渡されるパラメーターはすべて、モデルのサブプロパティであると見なされます。ModelDrivenアクションでは、アクションごとに1つのモデルしか持つことができません。
たとえば、というモデルとProfile
、プロファイルを編集するためのアクションがあるとします。私たちのフォームには、私たちのウェブサイトのテキストフィールドがあります。を使用しないと、アクションにメソッドがModelDriven
ありgetWebsite
ます。setWebsite
を使用ModelDriven
すると、代わりにモデルのゲッターとセッターが呼び出されます。事実上、getModel().setWebsite("http://stackoverflow.com")
。
例
public class EditProfileAction extends ActionSupport implements ModelDriven<Profile> {
private Profile profile;
// todo: other methods
@Override
public Profile getModel() {
return profile;
}
}
public class Profile {
private String website;
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
}
同意します...ModelDrivenはStruts1のActionFormに似ており、類似性があるため、このアプローチが提供されていると思います。それでも、uがモデルを持っている場合、多くの構成では、uはObjectBackedアプローチに従って、モデルに含まれるオブジェクト値を設定する必要があります。
の場合、ModelDriven
一度に設定できるpojoは1つだけです。ModelDriven
1つのアクションクラスで複数を使用することはできません。getModel()
メソッドはで指定されたPojoのオブジェクトにデータを入力するためModelDrive<Pojo>
、このpojoでゲッターを見つけようとします。フィールドの名前はフォーム名と一致している必要があります。