Frage

Ich habe 2 Tisch:

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

Ich benutze Hibernate, um 2 Tabelle zu kartieren

Java -Klasse

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>

Im Frühjahr habe ich Form zum Erstellen/Bearbeiten von Nachrichten. Ich habe ein ausgewähltes Feld, um einen Kanal auszuwählen. Also lade ich alle Kanäle in Controller und zeige in Blick

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

</form:form>

Wenn ich Senden drücke, ist nichts passiert, es befindet sich immer noch auf der JSP -Seite und keine Weiterleitung zur Onsubmit -Methode (alles funktioniert gut, bevor ich diese Auswahl hinzufüge).

Keine korrekte Lösung

Andere Tipps

Jeder Wert, den Sie durch das Formular bestehen, sollte eine Zeichenfolge oder Ganzzahl sein. Sie können kein Kanalobjekt im Formular einreichen. Ein anderer Grund ist, dass Sie kein Objekt von der Anfrage erhalten können. In der Servlet Request.getParameter () gibt die Zeichenfolge zurück.

Was Sie dem Wert -Attribut zugewiesen haben, ist eine Art ID, die Sie dann auf das entsprechende Kanalobjekt verweisen können. Wenn es sich um eine Zahl handelt, kann es sich um eine primitive INT-, Ganzzahl- oder String -Darstellung handeln - solange Sie sie einer Befehlsobjekteigenschaft abbilden, die vom Typ Ganzzahl oder Zeichenfolge ist. Mit anderen Worten muss der Kanal ganzzahlig oder eine Zeichenfolge sein. Sie sollten es wahrscheinlich in ChannelID umbenennen, nur um klar zu sein.

Geben Sie dann diese int -KanalID -Variable auch in Ihr Nachrichten -Pojo ein. Im Controller können Sie ein Kanalobjekt mit dieser ausgewählten Kanal -ID erstellen und dieses Kanalobjekt auf erstellte Nachrichtenobjekte festlegen. Zum Beispiel in der Controller -Klasse:

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

Das hat für mich funktioniert, als ich das gleiche Problem bekam. Dieser Thread erklärt das Problem genauer. http://forum.springource.org/showthread.php?t=33825

Ich hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top