用一个弹簧形式将2个对象绑定

时间:2018-07-08 13:25:34

标签: java spring

我有带有员工个人信息和联系信息的Simple Spring表单。我有2个Bean EmpPersonalInfo和EmpContactInfo,如何将2个对象与“ command”绑定并在empform中显示。 我得到了以下错误,例如bean类[java.util.HashMap]的无效属性'name':Bean属性'name'不可读或具有无效的getter方法:getter的返回类型与setter的参数类型匹配吗? ?

经验

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<form:form  action="saveemp"  method="post">
<table> 
<tr> <td> Name</td>
<td> <form:input path="name"/></td></tr>
<tr> <td>Id </td>
<td><form:input path="id"/> </td></tr>
<tr><td> Current Address</td>
<td><form:input path="empcontactinfo.currentAddress"/> </td> </tr>
</table>
<input type="submit" value="Submit">
</form:form>
</body>
</html>

Empcontroll.class

@RequestMapping("/empform")
public ModelAndView showForm()
{
    Map<String,Object> modelmap=new HashMap<String,Object>();
    modelmap.put("personalinfo",new EmpPersonalInfo() );
    modelmap.put("contactinfo", new EmpContactInfo());

    return new ModelAndView("empform","command",modelmap);
}

1 个答案:

答案 0 :(得分:1)

Path属性使用Java Bean约定将输入字段的值放入Java属性中,以用作控制器方法中的@ModelAttribute

@RequestMapping(...)
public String saveEmp(@ModelAttribute("employee") EmpPersonalInfo employee) {
  // ...
}

如果您只想在该地图中显示这两个对象内的值,则可以使用

<c:out value="${command['contactinfo'].contact}"/>