首页 > 解决方案 > 如何通过spring-mvc表单绑定我的dto中存在的对象

问题描述

我有我的 DTO 类 RegisteredTrainee,它与类 DemoInfo 有关联,这意味着我的 DTO 包含一个 DemoInfo 对象我成功绑定了我的 bean,但无法理解何时创建 DemoInfo 对象以及何时调用我的 DTO getDemoInfo( ) 它显示为空。请帮助我了解发生了什么。

我还尝试@requestparam 手动获取该 demoInfo 对象的值,但它显示表单没有名为 demoInfo.demoTime 的属性,并且名称在我的 springform 输入路径中完全相同

这是我的控制器

@RequestMapping("/demoTrainee")
    public ModelAndView generateDemoSlip(RegisteredTrainee regDemoInfo) {
        System.out.println(regDemoInfo.getRegisterationId() + " >>");
        System.out.println(regDemoInfo.getDemoInfo() + " >>");
        boolean bool = TraineeService.demoTrainee(regDemoInfo);
        if (bool)
            return new ModelAndView("enquirytaker/traineeregisteration/registeration/trainee-registeration","trainee",new RegisteredTrainee());
        return null;
    }

这是DTO

package org.mz.trainee.beans;

import java.util.ArrayList;
import java.util.Date;

import org.mz.ptp.beans.User;

public class RegisteredTrainee extends User {
private String registerationId;
private Date registerationDate;
private String enquiryTaker;
private DemoInfo demoInfo;
private ArrayList<EnrollInfo> enrollInfoList;

public RegisteredTrainee() {
    super();
    // TODO Auto-generated constructor stub
}

public String getRegisterationId() {
    return registerationId;
}

public void setRegisterationId(String registerationId) {
    this.registerationId = registerationId;
}

public Date getRegisterationDate() {
    return registerationDate;
}

public void setRegisterationDate(Date registerationDate) {
    this.registerationDate = registerationDate;
}

public String getEnquiryTaker() {
    return enquiryTaker;
}

public void setEnquiryTaker(String enquiryTaker) {
    this.enquiryTaker = enquiryTaker;
}

public DemoInfo getDemoInfo() {
    demoInfo = new DemoInfo();
    return demoInfo;
}

public void setDemoInfo(DemoInfo demoInfo) {
    demoInfo = new DemoInfo();
    this.demoInfo = demoInfo;
}

public ArrayList<EnrollInfo> getEnrollInfoList() {
    return enrollInfoList;
}

public void setEnrollInfoList(ArrayList<EnrollInfo> enrollInfoList) {
    this.enrollInfoList = enrollInfoList;
}
}

这是弹簧形式,即jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ page isELIgnored="false"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Demo Trainee Form</h1>
<form:form method="POST" action="demoTrainee" modelAttribute="regDemoInfo">
    <table>
        <tr>
            <td><form:label path="registerationId">RegId</form:label></td>
            <td><form:input path="registerationId" /></td>
        </tr>
        <tr>
            <td><form:label path="userName">Name</form:label></td>
            <td><form:input path="userName" /></td>
        </tr>
        <tr>
            <td><form:label path="email">Email</form:label></td>
            <td><form:input path="email" /></td>
        </tr>
        <tr>
            <td><form:label path="gender">Gender</form:label></td>
            <td><form:input path="gender" /></td>
        </tr>
        <tr>
            <td><form:label path="phone"> Contact Number</form:label></td>
            <td><form:input path="phone" /></td>
        </tr>
        <tr>
            <td><form:label path="${demoInfo.demoTime}">Demo Time</form:label></td>
            <td><form:input path="${demoInfo.demoTime}" /></td>
        </tr>
        <tr>
            <td><form:label path="${demoInfo.demoDate}">Demo Date</form:label></td>
            <td><form:input path="${demoInfo.demoDate}" /></td>
        </tr>
        <tr>
            <td><form:label path="${demoInfo.trainer}">Trainer</form:label></td>
            <td><form:input path="${demoInfo.trainer}" /></td>
        </tr>
        <tr>
            <td><form:label path="${demoInfo.training}">Training</form:label></td>
            <td><form:input path="${demoInfo.training}" /></td>
        </tr>
        <tr>
            <td><form:label path="${demoInfo.enquiryTaker}">Enquiry Taker</form:label></td>
            <td><form:input path="${demoInfo.enquiryTaker}" /></td>
        </tr>
        <tr>
            <td><input type="submit" value="Generate Demo Slip" /></td>
        </tr>
    </table>
</form:form>

标签: spring-mvcjsp

解决方案


请删除${}.

<tr>
   <td><form:label path="demoInfo.trainer">Trainer</form:label></td>
   <td><form:input path="demoInfo.trainer" /></td>
</tr>

推荐阅读