Cómo funciona la interfaz Struts2 ModelDriven
model-driven (3)
Tengo una duda. Cómo funciona la interfaz Struts2 Modeldriven
. En mi aplicación, utilicé una sola forma. Y puse setters y getters de la misma forma que los nombres de los formularios. ¿Es posible colocar múltiples objetos ModelDriven
con setter y getter? Si lo coloco así, ¿cómo lo reconocerá?
Cualquier acción que implemente la interfaz ModelDriven
debe suministrar un método getModel()
que devuelva el objeto que representa el modelo de la acción. Se asume que los parámetros pasados a la acción son sub-propiedades del modelo. Solo puede tener un modelo por acción en una acción ModelDriven.
Por ejemplo, supongamos que tenemos un modelo llamado Profile
y una acción para editar nuestro perfil. En nuestra forma, tenemos un campo de texto para nuestro sitio web. Sin usar ModelDriven
, tendría los métodos getWebsite
y setWebsite
en su acción. Con ModelDriven
, el getter y el setter en el modelo se llamarían en su lugar. Efectivamente, getModel().setWebsite("http://.com")
.
Ejemplo
public class EditProfileAction extends ActionSupport implements ModelDriven<Profile> {
private Profile profile;
// todo: other methods
@Override
public Profile getModel() {
return profile;
}
}
public class Profile {
private String website;
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
}
De acuerdo ... ModelDriven es similar a ActionForm en Struts1 y tiene la similitud que creo que proporciona este enfoque. Incluso entonces, si tiene su modelo, con muchas composiciones tendrá que seguir el enfoque ObjectBacked para establecer los valores del objeto contenido en el modelo.
En el caso de ModelDriven
, puede poblar solo un pojo a la vez. No puede usar múltiples ModelDriven
en clase de acción única. Porque el método getModel()
llena el Objeto del Pojo que se especifica en ModelDrive<Pojo>
. Intentará encontrar el getter en este pojo. El nombre del campo debe coincidir con los nombres de los formularios.