0

リストを含むmodelAttributeにフォームをマップしようとしています。nullポインター例外がスローされます。助けてください。

これは私のモデルです

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 のスプリング フォーム タグから取得した値を設定し、モデルにバインドしたいと考えています。だからこれが私がしたことです

<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

入力 UI ページをレンダリングする前に、空の FamilyDetails オブジェクトをフォームに渡して、Spring フォーム タグ ライブラリがすべての入力値を FamilyDetails オブジェクトにバインドできるようにする必要があります。

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

InputUIPage

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 に答える