Question

J'ai 2 tableaux:

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

J'utilise Hibernate pour cartographier le tableau

classe Java

public class Message {

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

public class Channel {

 private Integer number;
 private String name;
}

configuration hibernate

<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>

Au printemps, j'ai un formulaire pour créer / modifier le message. J'ai une boîte de sélection pour choisir un canal. Donc, je charge tous les canaux dans Controller et Show en vue

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

</form:form>

Lorsque j'appuie sur Soumettre, rien ne se passe, c'est toujours dans la page JSP et pas de redirection vers la méthode OnSubmit (tout fonctionne bien avant d'ajouter ce sélectionné)

Pas de solution correcte

Autres conseils

Toute valeur que vous passez par le formulaire doit être une chaîne ou un entier. Vous ne pouvez pas soumettre un objet de canal sur le formulaire. Une autre raison est que vous ne pouvez pas obtenir un objet de la demande. Dans le servlet request.getParameter () renvoie la chaîne.

Ce que vous souhaitez attribuer à l'attribut de valeur est une sorte d'ID que vous pouvez ensuite utiliser pour référencer l'objet de canal approprié. S'il s'agit d'un nombre, il peut s'agir d'une représentation primitive int, entier ou chaîne - tant que vous la mortez à une propriété d'objet de commande qui est de type entier ou chaîne. En d'autres termes, le canal doit être entier ou une chaîne. Vous devriez probablement le renommer pour canaliser juste pour être clair.

Ensuite, mettez également cette variable INT ChannelId dans votre message POJO. Dans le contrôleur, vous pouvez créer un objet de canal en utilisant cet ID de canal sélectionné et définir cet objet de canal sur l'objet Message créé. Par exemple, dans la classe de contrôleur:

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

Cela a fonctionné pour moi quand j'ai eu ce même problème. Ce fil explique le problème plus en détail. http://forum.springsource.org/showthread.php?t=33825

J'espère que cette aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top