Вопрос

У меня есть 2 таблица:

message(id, name, content, channel_number) // channel_number is foreign key
channel(number, name) // number is primary key

Я использую Hibernate для карты 2 таблицы

Java Class

public class Message {

 private Integer id;
 private String name;
    private String content;
 private Channel channel;
}

public class Channel {

 private Integer number;
 private String name;
}

Hibernate Config

<class name="Message" table="message">
  <id name="id" column="id">
   <generator class="native" />
  </id>
  <property name="name" column="name" />
  <property name="content" column="content" />
  <many-to-one name="channel" column="channel_number" not-null="true" />
 </class>

 <class name="Channel" table="channel">
  <id name="number" />
  <property name="name" />
 </class>

Весной у меня есть форма для создания/редактирования сообщения. У меня есть поле выбора, чтобы выбрать канал. Итак, я загружаю все каналы в Controller & Show

<form:form commandName="message" method="post" action="messageForm.htm">
    ...
    <form:select path="channel" items="${channelList}" itemValue="number" itemLabel="name"/>

</form:form>

Когда я нажимаю на отправку, ничего не произойдет, он все еще находится на странице JSP и не перенаправляет метод OnSubmit (все работает хорошо, прежде чем я добавлю этот выбор)

Нет правильного решения

Другие советы

Любое значение, которое вы проходите через форму, должно быть строкой или целым числом. Вы не можете отправить объект канала в форме. Другая причина в том, что вы не можете получить объект от запроса. В сервировании request.getParameter () возвращает строку.

То, что вы хотите назначить атрибуту значения, - это своего рода идентификатор, который вы можете использовать для ссылки на соответствующий объект канала. Если это число, это может быть примитивное представление int, integer или строки - до тех пор, пока вы отображаете его с свойством объекта команды, которое имеет тип Integer или String. Другими словами, канал должен быть целым или строкой. Вы, вероятно, должны переименовать его в Channelid, чтобы быть ясным.

Затем поместите эту переменную int Channelid в свое сообщение POJO. В контроллере вы можете создать объект канала, используя этот выбранный идентификатор канала и установить этот объект канала для создания объекта сообщения. Например, в классе контроллера:

    Message message = (Message ) command;
    Channel channel= new Channel();
    channel.setChannelID(message.getChannelID());
    message.setChannel(channel);

Это сработало для меня, когда у меня была такая же проблема. Эта ветка объясняет проблему более подробно. http://forum.springsource.org/showthread.php?t=33825

Надеюсь, это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top