私はStruts2に比較的慣れていません。開発のオーバーヘッドを減らすためにModelDrivenの使用を開始しました。アクションに到達する前にプロパティを変更するためのインターフェイスを作成したかったのですが、モデルのModelDrivenを実装するクラスのプロパティにアクセスする方法がわかりません。
validate()のようなものが、実際のアクションクラスでどのように機能するかを確認できます。とにかくサービスの背後にあるロジックをカプセル化するように設計を変更しましたが、それでもこれが可能かどうかを知りたいと思います。
私たちはすべてをajax/jsonで行っているので、モデル駆動型が非常に役立つことがわかりました-しかし、より良い代替手段があるかどうかはわかりません!
編集-コード例:
メール本文で使用するテンプレート内のメッセージをメッセージに置き換えようとしています。
public class EmailActionImpl implements EmailAction {
private Email email=new Email();
private EmailService emailService;
public Email getModel(){
return email;
}
[... getters and setters ...]
public String execute(){
logger.info("Email action is sendind an email...");
try{
emailService.sendNewMail(email);
}catch(Exception e){
logger.error("Email not sent: " + e.getMessage());
return "failure";
}
return "success";
}
}
このようなメールモデル
@Entity
@Table(name="email")
public class Email {
private Long id;
private String from;
private String to;
private String message;
private String templateType;
[...]
}
email.messageの代わりにインターセプタープリプロセッサーが欲しいのですが。このように見えるはずですが、action.getMessage/setMessageは使用できません。
public class SimpleInterceptor extends AbstractInterceptor {
public String intercept(ActionInvocation invocation) throws Exception {
EmailAction action = (EmailAction)invocation.getAction();
action.setMessage(MessageTemplateFactoryImpl(action.getMessage(), action.getTemplateType());
return invocation.invoke();
}
}