2

エラーがあります:org.springframework.beans.NotReadablePropertyException: Invalid property 'organizations' of bean class [com.sprhib.model.Team]: Bean property 'organizations' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

テーブルがあります: チーム、組織。一対多の関係があります。

チームモデル

@Entity
@Table(name="teams")
public class Team {

    private Organization organization;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "FK_Organization_id", nullable = false)
    public Organization getOrganization() {
        return organization;
    }

    public void setOrganization(Organization organization) {
        this.organization = organization;
    }
}

組織

@Entity
@Table(name = "organization")
public class Organization {
    private Set<Team> teams;

    @OneToMany(fetch = FetchType.EAGER, mappedBy = "organization")
    public Set<Team> getTeams() {
        return teams;
    }

    public void setTeams(Set<Team> teams) {
        this.teams = teams;
    }
}

JSP

<form:form method="POST" commandName="team" action="${pageContext.request.contextPath}/team/add.html">    
     <form:select path="organizations">
         <form:option value="${organization}">
             <c:out value="${organization.name}"/>
         </form:option>
     </form:select>
</form:form>

春にすべての組織を JSP にするにはどうすればよいですか?

アップデート:

コントローラーを使用して、すべての組織と新しいチーム オブジェクトのリストを jsp に渡します。

@Controller
@RequestMapping(value="/team")
public class TeamController {

    @Autowired
    private TeamService teamService;

    @Autowired
    private OrganizationService organizationService;

    @RequestMapping(value="/add", method=RequestMethod.GET)
    public ModelAndView addTeamPage() {
        ModelAndView modelAndView = new ModelAndView("teams/add-team-form");
        modelAndView.addObject("team", new Team());
        modelAndView.addObject("organizations", organizationService.getOrganizations());

        return modelAndView;
    }

更新 2:

commandName="team"、複数のモデル属性の使用を制限します。この場合、次の 2 つがorganizationsありteamます。それを機能させる方法は?

カスタム属性名: commandName 説明: フォーム オブジェクトが公開されるモデル属性の名前。デフォルトは「コマンド」です。必須: false ランタイム値を持つことができます: true

4

1 に答える 1

0

<form:option>単一のオプションを選択リストに追加するために使用されます。<form:options>"を使用して、コレクション内のすべての要素を追加できます。

<form:select path="organization">
    <form:options items="${organizations}" />
</form:select>

デフォルトの選択されていないオプションを追加する場合のように、両方を使用することもできます。

<form:select path="organization">
    <form:option value="" label="- Select -"/>
    <form:options items="${organizations}" />
</form:select>

選択される値は、フォームを介して渡されるチーム Bean で終わります。属性は、pathチームで設定されるプロパティを決定するために使用されます。この場合はorganisation(組織ではありません)

于 2015-02-19T23:50:09.913 に答える