Estoy tratando de entender la arquitectura de Spring MVC. Sin embargo, estoy completamente confundido por el comportamiento de @SessionAttributes.Estoy confundido acerca de cómo usar @SessionAttributes
Mire SampleController a continuación, está manejando el método de publicación por la clase SuperForm. De hecho, solo el campo de la clase SuperForm solo es vinculante como esperaba.
Sin embargo, después de poner @SessionAttributes en el controlador, el método de manejo es vinculante como SubAForm. ¿Alguien puede explicarme qué pasó en este enlace?
-------------------------------------------------------
@Controller
@SessionAttributes("form")
@RequestMapping(value = "/sample")
public class SampleController {
@RequestMapping(method = RequestMethod.GET)
public String getCreateForm(Model model) {
model.addAttribute("form", new SubAForm());
return "sample/input";
}
@RequestMapping(method = RequestMethod.POST)
public String register(@ModelAttribute("form") SuperForm form, Model model) {
return "sample/input";
}
}
-------------------------------------------------------
public class SuperForm {
private Long superId;
public Long getSuperId() {
return superId;
}
public void setSuperId(Long superId) {
this.superId = superId;
}
}
-------------------------------------------------------
public class SubAForm extends SuperForm {
private Long subAId;
public Long getSubAId() {
return subAId;
}
public void setSubAId(Long subAId) {
this.subAId = subAId;
}
}
-------------------------------------------------------
<form:form modelAttribute="form" method="post">
<fieldset>
<legend>SUPER FIELD</legend>
<p>
SUPER ID:<form:input path="superId" />
</p>
</fieldset>
<fieldset>
<legend>SUB A FIELD</legend>
<p>
SUB A ID:<form:input path="subAId" />
</p>
</fieldset>
<p>
<input type="submit" value="register" />
</p>
</form:form>
¡Muchas gracias! Tu explicación es Super! Me estoy poniendo claro. – zono
Gracias por la explicación, estoy un poco confundido con "Es decir, con @SessionAttribute register() obtiene la misma instancia del objeto de atributo del modelo que se colocó en el modelo mediante getCreateForm()". En cualquier caso, está recibiendo un usuario cualquiera ingresado en el formulario, entonces, ¿qué quiere decir con esta frase? Quiero decir, de todos modos, recibes los valores correctos de cada campo, entonces, ¿cuál es el sentido de usar sessionAttribute? ¿Me estoy perdiendo de algo? – Jack
fue @SessionAttributes o @SessionAttribute? : p –