0

我正在尝试将表单映射到其中包含列表的 modelAttribute。它向我抛出空指针异常。请帮忙。

这是我的模型

public class FamilyDetails {

    private String spousesName;
    private int spousesAge;
    private String fatherName;
    private String motherName;
    private String fatherAge;
    private String motherAge;
    private long emergencyNumber;
    private String weddingDate;
    private List<ChildrenDetails> childrenDetails;

......

这包含 childrenDetails 模型的列表

我的孩子详细信息模型是

public class ChildrenDetails {

    private String childName;
    private String childGender;
    private String childDob;
    private String childCompanyName;
    private String childPosition;

……

我想设置从 jsp 中的 spring 表单标签中获取的值并将其绑定到我的模型。所以这就是我所做的

<tr>
                        <c:set value="${family.childrenDetails}" var="child"/>
                        <td>childname:<input type="text" value="${child.childName}"/></td>
                        <td>childGender:<input type="text" value="${child.childGender}"> </td>
                        <td>childDob:<input type="text" value="${child.childDob}"> </td>
                        <td>childCompanyName:<input type="text" value="${child.childCompanyName}"> </td>
                        <td>childPosition:<input type="text" value="${child.childPosition}"> </td>
</tr>   

每次我更改某些内容时,我都会遇到不同类型的异常。请告诉我将模型绑定到我从 UI 发送的值的正确方法是什么

4

2 回答 2

0

在方法级别参数中使用@ModelAttribute注释。它将值与您的FamilyDetails域模型对象绑定。

    public String methodName(@ModelAttribute(value="familyDetails") FamilyDetails familyDetails, BindingResult result)
    {
      if (!result.hasErrors()){
           /* action */

      } else {
           /* Binding result error */
           return "Failed";
        }
    return "viewPage";
}
于 2015-07-23T06:26:54.473 回答
0

在渲染输入 UI 页面之前,您需要将一个空的 FamilyDetails 对象传递给表单,以便 spring 表单标签库可以将所有输入值绑定到 FamilyDetails 对象。

 @RequestMapping(/UIurl)
    public String renderUI(ModelMap model)
    {
    model.addAttribute("FamilyDetails", new FamilyDetails());
    return "InputUIPage";
    }

输入UI页面

使用Spring表单标签库;modelAttribute 将所有输入字段绑定到模型

<form:form modelAttribute="FamilyDetails" action=""/>

访问控制器中的输入值以进行进一步处理

@RequestMapping(/formActionurl)
    public String renderUI(@ModelAttribute("FamilyDetails") FamilyDetails familyData)
    {
    String spouseName = familyData.getSpousesName();
    //
    }

看看这个_

于 2015-07-23T07:40:06.003 回答