سؤال

لدي جدولان:

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

أستخدم السبات لتعيين 2 جدول

فئة جافا

public class Message {

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

public class Channel {

 private Integer number;
 private String name;
}

تكوين السبات

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

في الربيع ، لدي نموذج لإنشاء/تحرير رسالة. لدي مربع تحديد لاختيار قناة. لذلك ، أقوم بتحميل جميع القنوات في وحدة التحكم والعرض في العرض

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

</form:form>

عندما أضغط على إرسال ، لا شيء يحدث ، لا يزال في صفحة JSP ولا إعادة توجيه إلى طريقة OnSubmit (كل شيء يعمل بشكل جيد قبل إضافة هذا الاختيار)

لا يوجد حل صحيح

نصائح أخرى

يجب أن تكون أي قيمة تمر عبر النموذج سلسلة أو عدد صحيح. لا يمكنك إرسال كائن قناة في النموذج. سبب آخر هو أنه لا يمكنك الحصول على كائن من الطلب. في servlet request.getParameter () إرجاع السلسلة.

ما تريد تعيينه إلى سمة القيمة هو نوع من المعرف الذي يمكنك استخدامه بعد ذلك للإشارة إلى كائن القناة المناسب. إذا كان رقمًا ، فيمكن أن يكون تمثيلًا بدائيًا أو عدد صحيح أو سلسلة - طالما قمت بتخطيطه إلى خاصية كائن أمر من نوع عدد صحيح أو سلسلة. بمعنى آخر ، يجب أن تكون القناة عددًا صحيحًا أو سلسلة. من المحتمل أن تعيد تسميته إلى قناة فقط لتكون واضحًا.

ثم ضع هذا المتغير 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