2

次のようなオブジェクトCreateProjectFormModelがあります(Spring 4を使用しています)。

public class CreateProjectFormModel {
    private Project project;
    private List<DUser> users;

    public CreateProjectFormModel() {
        this.project = new Project();
        this.users = new ArrayList<DUser>();
    }

    public Project getProject() {
        return project;
    }

    public void setProject(Project project) {
        this.project = project;
    }

    public List<DUser> getUsers() {
        return users;
    }

    public void setUsers(List<DUser> users) {
        this.users = users;
    }
}

DUserオブジェクトがコレクションで構成されていない場合、複数を一度に送信できるようにコントローラーと対応するフォームを作成する方法を理解できませんか?

これを読んで、事前に何人のユーザーがプロジェクトに追加されるかわからないため、ユーザーのサイズを修正できません。

thymeleaf のチュートリアルを読みましたが、thymeleaf を使用せずにできるかどうか知りたいです。

ありがとう。

4

2 に答える 2

2

質問List<Foo> as form backing object using spring 3 mvc に投稿したリンクは正しい構文ですか? コメントで議論されている解決策を提供する必要があります

このソリューションには一定量の入力フィールドが必要だと思いますが、それは正しいですか? 動的な数の入力フィールドがある場合はどうなりますか?

修正する必要のないユーザー数には関係ありません。むしろ、オブジェクトのプロパティが異なるという事実に関係していますが、これはあなたの場合ではないと思います。したがって、DUserにプロパティuserNameがあり、たとえば、プロジェクトにプロパティnameがあるとします。あなたのコントローラーメソッドは単純に、

@RequestMapping(value = "/test", method=RequestMethod.POST)
public String processSubmit(CreateProjectFormModel createProjectFormModel) {
       ...
}

そしてあなたのフォーム

<form:form action="/form/test" method="post">
    <div class="single">
        <input type="text" name="project.name"/>
        <input type="text" name="users[0].userName"/>
        <a href="#" onclick="addNewUserInputSection();return false">add another user</a>
        <input type="submit" value="Save">
    </div>
</form:form>

いくつかの労力を提供する必要があるのは、JavaScript 関数addNewUserInputSectionを作成することです。この関数は、 usersプロパティの入力フィールドの新しいセットをインクリメントされたインデックスで追加します。

<form:form action="/form/test" method="post">
    <div class="single">
        <input type="text" name="project.name"/>
        <input type="text" name="users[0].userName"/>
        <input type="text" name="users[1].userName"/>
        <a href="#" onclick="addNewUserInputSection();return false">add another user</a>
        <input type="submit" value="Save">
    </div>
</form:form>

例は基本的なものですが、問題を解決するには十分なはずです

于 2014-12-21T08:28:25.607 に答える