有没有办法避免在此代码中重复属性?

时间:2013-01-30 19:06:06

标签: java struts2

您好我想知道是否存在避免此代码中重复代码的方法。现在我有一个名为CustomerAction的动作类,这个类处理请求的行为(它就像一个控制器),我有一个CustomerPOJO,其中包含id,name,last_name等属性。现在我必须向CustomerAction添加属性来处理数据提交从形式。有没有办法绕过我的CustomerPOJO行动?

public class CustomerAction {

private String nombre;
private String apellido;
private String dni;
private String fechaNac;
private String obraSocial;
private String nroAsociado;
private String plan;
private String password;
private String email;
private String telParticular;
private String telCelular;

private static final Log log = LogFactory
        .getLog(CustomerAction.class);

public String execute() throws Exception {
    if ("cancelar".equals(this.getAccion())) {
        log.debug("Executing 'cancelar' action");
        return "login";
    }

    if ("registro".equals(accion)) {
        log.debug("Executing 'registro' action");
        IReferenceDataBusinessDelegate ud = new ReferenceDataBusinessDelegate();
        ud.signCustomer(this.getNombre(), this.getApellido(),
                this.getDni(), this.getCorreo(), this.getContrasena());

        return "login";

    }
}

public class Customers implements java.io.Serializable {

private long id;
private String dni;
private String name;
private String lastName;
private String email;
private String password;
private String phone;
private String cellphone;
private Date birthDate;
private Date creationDate;
private Date lastAccessDate;
private byte active;
private Set<Profesionales> profesionaleses = new HashSet<Profesionales>(0);
private Set<Pacientes> pacienteses = new HashSet<Pacientes>(0);

public Customers() {
}
}

1 个答案:

答案 0 :(得分:2)

是的,使用ModelDriven,并使用Customers作为模型。

http://struts.apache.org/2.x/docs/model-driven.html

您需要确保"modelDriven"拦截器在您的堆栈中。

初始化模型的方式/位置取决于您的特定使用方案;如果需要从数据库中重新加载,可以在文档中显示的getter中以prepare()方法执行此操作。

我不确定你的意思是“绕过行动。”

请注意,此处使用accion参数实现的ad-hoc调度机制使用操作配置的method属性重复Struts 2提供的功能。我不建议使用ad-hoc调度机制,因为它使得理解程序流程比必要更困难。