Я относительно новичок в Struts2. Я начал использовать ModelDriven для уменьшения накладных расходов при разработке. Я хотел написать интерфейс, чтобы изменить свойство до его действия, но я не вижу, как вы можете получить доступ к свойствам класса, реализующего ModelDriven для модели.Struts2 - Реализация ModelDriven - Создание перехватчика, который обращается к свойствам модели
Я вижу, как такие вещи, как validate(), могут работать так, как они есть в действительном классе действий. Я изменил дизайн, чтобы в любом случае инкапсулировать логику обслуживания, но все же хотелось бы знать, возможно ли это.
Мы делаем все от ajax/json, поэтому я считаю, что modeldriven помогает довольно много - не уверен, что есть лучшая альтернатива!
Edit - пример кода:
Попытка заменить сообщение с сообщением в шаблоне для использования в теле сообщения электронной почты.
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";
}
}
Email модель что-то вроде этого
@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();
}
}
Если я правильно понимаю, что вы хотите изменить свойство, заданное в форме? –
Что именно вы пытаетесь сделать? Не зная, что это трудно сказать. Вы можете изменить значения в запросе, но обычно имеет смысл реализовать свой собственный конвертер типов. Оба они охватывают несколько случаев и не проверяют действие и напрямую устанавливают значения с помощью вашего собственного перехватчика. – Quaternion
Я скоро отправлю примеры кода. – JasonG