Java 同一表单上的Spring MVC多模型属性

Java 同一表单上的Spring MVC多模型属性,java,html,spring-mvc,modelattribute,Java,Html,Spring Mvc,Modelattribute,我有一个表格,有两个属性,一个是公民,另一个是惩罚。这两个对象由jquery选项卡分隔。我在正确显示表单上的项目时遇到问题,有些项目正在显示,有些项目未显示。我指的是html元素 我不确定当页面上有多个modleaAttribute时控制器会是什么样子。下面是代码示例: 页面 <title>Citizen Registration</title> </head> <body> <div id="tabs

我有一个表格,有两个属性,一个是公民,另一个是惩罚。这两个对象由jquery选项卡分隔。我在正确显示表单上的项目时遇到问题,有些项目正在显示,有些项目未显示。我指的是html元素

我不确定当页面上有多个modleaAttribute时控制器会是什么样子。下面是代码示例:

页面

<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>

这是我的代码,但是当我运行它时,tab2中没有显示任何内容,也没有显示tab1中的所有元素。

如果可以使用Spring表单绑定多个模型,我不这么认为。事实上,您应该看看spring绑定表单。 查看示例代码。我还没有测试代码。如果有任何问题,请告知

模型 控制器 JSP






我已经在这个链接中给出了另一种方法


一般信息
版本:
说明:
功能:
应用程序内容 中情局评级 中央情报局评级: 1. 2. 3. 4.

业务连续性和灾难恢复 RTO RTO: <2小时 2小时至4小时 4小时-48小时 >48小时
RPO RPO:

$(文件)。准备好了吗(
函数(){
$(“#用户出席”)。提交(
职能(e){
e、 预防默认值();
jQuery.ajaxSetup({
异步:false
});
var a=“${pageContext.request.contextPath}”;
警报(a);
$.post($(this.attr(“操作”),$(this.serialize(),
功能(响应){
$(“#showTableByDate”).html(回复);
jQuery.ajaxSetup({
异步:true
});
});
});
//日期选择器
$(“#日期选择器”)。日期选择器({
自动关闭:正确
});
});

如果您创建一个引用这两个类的类,那该怎么办呢?如果您想使用标准的spring表单,那么这样做是否有效。然后,要绑定多个模型,可以创建一个包含模型的表单类。但是我发现spring绑定表单更容易,因为它们不再需要实现额外的类。此外,可以分别对每个模型进行验证。此外,它还提供了绑定嵌套模型的功能。我理解您的意思,您建议使用单独的表单吗?只使用spring绑定表单。我将发布一些示例用法来帮助您。我对使用spring还不熟悉,我想使用一些最有效的方法来开发和维护,因为如果我使用combine类,我会发现问题,我想查询表单甚至更新一些其他解释可能会有所帮助。
@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");
public class User{

private String username;
private String password;

..Setter and Getters
}

public class UserProfile{
private String firstName;
private String lastName;

setter and getter
}
@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.

        }
    }
<%@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>
<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
            });
        });