1

複数選択フォーム:select タグで複数の値を選択する必要があります。私のjspコードは

<form:form id="myForm"
action="service.do" modelAttribute="services"
method="POST">
 ....
 ....

<form:select path="channelsInvolved" items="${allChannels}" itemValue="channelid" itemLabel="channelname"> 

私のコントローラーは...

List<Channels> channels = dao.getAllChannels();
model.addAttribute("allChannels", channels);

ServiceRegistration serRegistration = dao.getById(2);
model.put("services", serRegistration);

実際には、ServiceRegistration、Channels (META データを含む)、ServiceChannel の 3 つのテーブルがあります。ServiceChannel には、サービス登録テーブルとチャネル テーブルの両方を含む外部キー参照が含まれています。そのため、1 つのサービス ID に複数のチャネル ID がサービスチャネル テーブルにマップされている場合があります。

私のServiceRegistration.javaエンティティクラスにはchannelsInvolvedフィールドがあります...

@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.EAGER)
 @JoinTable(name = "ServiceChannel", joinColumns = {
 @JoinColumn(name="serviceid", unique = true) 
 },
 inverseJoinColumns = {
 @JoinColumn(name="channelid")
 }
 )

 private List<Channels> channelsInvolved;

     public List<Channels> getChannelsInvolved() {
    return channelsInvolved;
  }

public void setChannelsInvolved(List<Channels> channelsInvolved) {
    this.channelsInvolved = channelsInvolved;
  }

チャネル エンティティ クラス... Channels.java

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column private int channelid;
@Column private String channelname; 

ServiceChannel.java エンティティ クラス...

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column private int servicechannelid;    

@ManyToOne
@JoinColumn(name = "serviceid")
private ServiceRegistration serviceRegistration;

@ManyToOne
@JoinColumn(name = "channelid")
private Channels channels;

たとえば、チャネル ID >> 1 と 2 にマッピングされたサービス ID >> 2 があるとします。「channelsInvolved」に 2 つのレコードが表示されます。しかし、serRegistration をモデル属性として jsp に設定すると、select タグで何も選択されません。

ありがとうございます。

4

1 に答える 1

4

equalsエンティティ(特に)に正しい実装が必要になりますChannels

于 2011-10-04T06:09:45.653 に答える