4

多対多の関係を持つ「人」と呼ばれる物と「コース」と呼ばれる物があります。参加エンティティは「PersonCourse」と呼ばれます。

@Entity
@Table(name="person_course")
public class PersonCourse implements Serializable {

    @Id
    @ManyToOne
    @JoinColumn(name="course_ID")
    private Course course;

    @Id
    @ManyToOne
    @JoinColumn(name="person_ID")
    private Person person;

    // Getter and setters here
}

「PersonCourse」に情報を保持することになっている次のフォームがあります。

<form:form method="post" action="addpersoncourse.html" commandName="personcourse">

    <form:label path="person"><spring:message code="label.person"/></form:label>

    <form:select path="person">
        <c:forEach items="${personList}" var="person">
            <form:option value="${person.id}">${person.firstName} ${person.lastName}</form:option>
        </c:forEach>
    </form:select>  

    <form:label path="course"><spring:message code="label.course"/></form:label>

        <form:select path="course">
            <c:forEach items="${courseList}" var="course">
                <form:option value="${course.id}">${course.course}</form:option>
            </c:forEach>
        </form:select>  


        <input type="submit" value="<spring:message code="label.addpersoncourse"/>"/>
</form:form>

コントローラーでは、次の方法で情報を読み取ろうとしています。

@RequestMapping(value = "/addpersoncourse", method = RequestMethod.POST)
public String addpersoncourse(@ModelAttribute("personcourse")
PersonCourse personCourse, BindingResult result) {  

    // HERE personcourse.person and personcourse.course ARE NULL

// Other operation I'm supposed to do
}

しかし、何らかの理由で personcourse.person と personcourse.course が null です。何が間違っている可能性がありますか?

4

1 に答える 1

4

次のように変更してみてください:

<form:select path="person.id">
<form:select path="course.id">

または使用してみてくださいFormatters

于 2013-07-10T01:16:05.273 に答える