私は疑問を持っています。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つだけです。ModelDriven1つのアクションクラスで複数を使用することはできません。getModel()メソッドはで指定されたPojoのオブジェクトにデータを入力するためModelDrive<Pojo>、このpojoでゲッターを見つけようとします。フィールドの名前はフォーム名と一致している必要があります。