我对 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();
}
}