Я относительно новичок в Struts2.
Я начал использовать ModelDriven для уменьшения накладных расходов при разработке.
Я хотел написать интерфейс для изменения свойства, прежде чем оно перейдет к действию, но я не понимаю, как вы можете получить доступ к свойствам класса, который реализует ModelDriven для модели.
Я вижу, как такие вещи, как validate (), могут работать так, как они есть в реальном классе действий.
Я изменил дизайн, чтобы в любом случае инкапсулировать логику службы, но все же хотел бы знать, возможно ли это.
Мы делаем все с помощью ajax / json, поэтому я считаю, что modeldriven очень помогает - хотя и не уверен, что есть лучшая альтернатива!
Редактировать - пример кода:
Попытка заменить сообщение на сообщение в шаблоне для использования в теле письма.
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();
}
}