puede para método mvc multiple formulario form escritura encontrar ejemplo commandname attribute atributo annotation java html spring-mvc modelattribute

java - para - spring mvc formulario ejemplo



Spring MVC Multiple ModelAttribute en la misma forma (3)

No lo creo si puedes enlazar varios modelos usando la forma Spring. De hecho, debería echar un vistazo en la forma de enlace de primavera. http://static.springsource.org/spring/docs/1.1.5/taglib/tag/BindTag.html Echa un vistazo al código de muestra. No he probado el código. Déjame saber en caso de cualquier problema.

Modelo

public class User{ private String username; private String password; ..Setter and Getters } public class UserProfile{ private String firstName; private String lastName; setter and getter }

Controlador

@Controller public class MyController{ @RequestMapping(....) public String newAccountForm(ModelMap map){ User user = new User(); //Would recommend using spring container to create objects UserProfile profile = new UserProfile(); map.addAttribute(''user'', user); map.addAttribute(''profile'', profile); return "form" } @RequestMapping(....) public String newAccountForm(@ModelAttrbite(''User'')User user, BindingResult resultUser, @ModelAttribute(''UserProfile'')UserProfile userProfile, BindingResult resultProfile){ //Check the binding result for each model. If not valid return the form page again //Further processing as required. } }

JSP

<%@taglib uri="http://www.springframework.org/tags" prefix="spring"> <form action="" method="post"> <spring:bind path="user.username"> <input type="text" name="${status.expression}" value="${status.value}"><br /> </spring:bind> <spring:bind path="user.password"> <input type="password" name="${status.expression}" value="${status.value}"><br /> </spring:bind> <spring:bind path="profile.firstName"> <input type="text" name="${status.expression}" value="${status.value}"><br /> </spring:bind> <spring:bind path="profile.lastName"> <input type="text" name="${status.expression}" value="${status.value}"><br /> </spring:bind> <input type="submit" value="Create"/> </form>

Tengo un formulario con dos atributos modelo. Uno es ciudadano y el otro es castigo. Los dos objetos están separados por pestañas jquery. Tengo problemas para mostrar los elementos en el formulario y algunos se muestran y otros no. Me refiero a los elementos html.

No estoy seguro de cómo se vería el controlador cuando haya múltiples ModleAttributes en la página. Debajo hay una muestra del código:

Página

<title>Citizen Registration</title> </head> <body> <div id="tabs"> <ul> <li><a href="#tab1">Citizen Registration</a></li> <li><a href="#tab2">Punishment</a></li> </ul> <div id="tab1"> <form:form id="citizenRegistration" name ="citizenRegistration" method="post" modelAttribute="citizens" action="citizen_registration.htm"> <div id="divRight" class="mainDiv"> <div class="divGroup" id="divCharInfo"> <fieldset> <legend>Characteristics Info</legend> <ol> <li><form:label for="photo" path="photo">Select Photo</form:label> <form:input path="photo" type="file" id="photo" title="Upload a photo"/><form:errors path="photo" id="errors"/></li> <li> <label>Select Gender</label> <form:select path="genderId" id="genderId" title="Select Your Gender"> <form:options items = "${gender.genderList}" itemValue="genderId" itemLabel="genderDesc" /> </form:select> <form:errors path="genderId" class="errors"/> </li> <li><form:label for="weight" path="weight">Enter Weight <i>(lbs)</i></form:label> <form:input path="weight" id="weight" title="Enter Weight"/><form:errors path="weight" id="errors"/> </li> <li><form:label for="height" path="height">Enter Height <i>(feet)</i></form:label> <form:input path="height" id="height" title="Enter Height"/><form:errors path="height" id="errors"/> </li> ....................... <div id="tab2"> <form:form id="punishmentRegistration" name ="punishmentRegistration" method="post" modelAttribute="punishment" action="punishment_registration.htm"> <ol> <li> <form:label for ="punishmentId" path="punishmentId">Punishment Number</form:label> <form:input path="punishmentId" id="punishmentId"/><form:errors path="punishmentId" id="errors"/> </li> <li> <form:label for="crimeRecNo" path="crimeRecNo">Select Crime</form:label> <form:select path="crimeRecNo" id="CrimeRecNo" title="Select Crime"> <form:options items = "${crime.crimeList}" itemValue="crimeRecNo" itemLabel="crimeRecNo" title="crimeDesc"/> </form:select> <form:errors path="crimeRecNo" id="errors"/> </li> <li> <form:label for ="monitoringStDate" path="monitoringStDate"> Start Date </form:label> <form:input path="monitoringStDate" id="monitoringStDate"/><form:errors path="monitoringStDate" id="errors"/> </li> <li> <form:label for ="monitoringEnDate" path="monitoringEnDate"> End Date </form:label> <form:input path="monitoringEnDate" id="monitoringEnDate"/><form:errors path="monitoringEnDate" id="errors"/> </li> </ol> </form:form> </div> </div> </body> </html>

Controlador

@RequestMapping(value="citizen_registration.htm", method = RequestMethod.GET) public ModelAndView loadPage(HttpServletRequest request, HttpServletResponse response, @ModelAttribute Citizens citizens, @ModelAttribute Punishment punishment, BindingResult result, ModelMap m, Model model) throws Exception { //code here return new ModelAndView("citizen_registration");

Este es mi código, sin embargo, cuando lo ejecuto, no se muestra nada en tab2 y no se muestran todos los elementos en tab1.


Ya di un enfoque alternativo en este enlace here

<form:form method="POST" modelAttribute="applicationGeneralInformation"> <div class="section2"> <h2>General Informaion</h2> <form:input type="hidden" path="id" id="id"/> <label for="app_version">Version</label>: <form:input type="text" id="app_version" path="version"/><br/> <label for="app_func_desc">Description</label>: <form:input type="text" id="app_func_desc" path="functionalDescription"/><br/> <label for="app_sec_func">Functions</label>: <form:input type="text" id="app_sec_func" path="securityFunctions"/><br/> </div> <div class="section2"> <h2>Application Content</h2> <form:form method="POST" modelAttribute="applicationContent"> <div> <h3>CIA Rating</h3> <label for="CIARating">CIA Rating</label>: <form:select type="text" id="CIARating" path="CIARating"> <form:option value="1">1</form:option> <form:option value="2">2</form:option> <form:option value="3">3</form:option> <form:option value="4">4</form:option> </form:select><br/><br/> </div> <div> <h3>Business Continuity and Disaster Recovery</h3> <div> <h4>RTO</h4> <label for="RTO">RTO</label>: <form:select type="text" id="RTO" path="RTO"> <form:option value="1">< 2<sub>Hrs</sub></form:option> <form:option value="2">2<sub>Hrs</sub>-4<sub>Hrs</sub> </form:option> <form:option value="3">4<sub>Hrs</sub>-48<sub>Hrs</sub></form:option> <form:option value="4">> 48<sub>Hrs</sub></form:option> </form:select><br/> </div> <div> <h4>RPO</h4> <label for="RPO">RPO</label>: <form:input type="text" id="RPO" path="RPO"/><br/> </div> </div> </form:form> <input type="submit" value="Submit"> </div> </form:form>


<script type="text/javascript"> $(document).ready( function() { $("#userAttendance").submit( function(e) { e.preventDefault(); jQuery.ajaxSetup({ async : false }); var a = "${pageContext.request.contextPath}"; alert(a); $.post($(this).attr("action"), $(this).serialize(), function(response) { $("#showTableByDate").html(response); jQuery.ajaxSetup({ async : true }); }); }); //Date picker $(''#datepicker'').datepicker({ autoclose : true }); });