Spring MVC 3 множественный выбор тегов

#java #spring-mvc #spring-3

#java #spring-mvc #spring-3

Вопрос:

Мне нужно выбрать несколько значений в форме множественного выбора: выберите тег. мой 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);
  

На самом деле, у меня есть 3 таблицы -> ServiceRegistration, Channels (содержит метаданные) и ServiceChannel. ServiceChannel содержит ссылку на внешний ключ как с таблицами serviceregistration, так и с таблицами каналов. Таким образом, один serviceid может иметь несколько идентификаторов каналов, отображенных в таблице servicechannel.

моя регистрация сервиса.класс сущности 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;
  

Скажем, у меня есть идентификатор службы>> 2, сопоставленный с идентификатором канала>> 1 и 2. Я могу видеть 2 записи в «channelsInvolved». Но когда я устанавливаю serRegistration как атрибут модели для jsp, в теге select не выбирается ни один.

помощь оценена, спасибо.

Ответ №1:

Вам понадобится правильная equals реализация в ваших сущностях (особенно в Channels ).

Комментарии:

1. как удалить записи servicechannel при удалении любой службы? На данный момент, когда я удаляю служебную запись, она удаляет запись таблицы каналов, но этого не должно быть, поскольку это МЕТА-таблица. Пожалуйста, помогите. Спасибо!

2. @Surez: создайте новый вопрос, чтобы задать вопрос об удалении материала!

3. @Ralph спасибо, вы сэкономили мое время, поиск в течение нескольких часов,