سؤال

أنا أستخدم تدفق الويب 2.0.7 مع الربيع MVC والإسبات.

مشكلتي حول محولات مخصصة لأنواع مخصصة واتصال قاعدة البيانات من داخل محولي.

دعنا نقول أن لدي نوع شخص و ال شخص لديه مجال من النوع المخصص عنوان, ، وكل عناوين بالفعل في قاعدة البيانات الخاصة بي. الآن لدي نموذج HTML، حيث يمكن للمستخدم ملء شخص مثيل، بما في ذلك اختيار عنوان في مربع منسدلة مختارة.

في تعريف التدفق أحصل على كل شيء عناوين من قاعدة البيانات وتظهر في المربع المنسدلة باستخدام محول مخصص، تحويل عنوان ل سلسلة وبعد ذلك العودة إلى عنوان.

سؤالي هو عن عملية التحويل مرة أخرى من سلسلة (وهو معرف قاعدة البيانات، الذي قمت بتعيينه كقيمة على العنصر) إلى الصحيح عنوان كائن من قاعدة البيانات الخاصة بي. أساسا: كيف نفعل ذلك؟

حتى الآن، لم أتمكن من الحصول على titlemanager حقن في محولي للحصول على قاعدة البيانات. تم تعليق هذا السيناريو في منتدى تدفق ويب الربيع. وبعد قد يكون حل آخر لذاكرة التخزين المؤقت عناوين قبل تقديم الرأي واحصل على الذاكرة بطريقة أو بأخرى عنوان بعد نشر النموذج.

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

أنا بالفعل نشرت موضوع على لوحة تدفق الويب, ، ولكن لا يزال يفتقد أفضل براتيس، وأنا غير قادر على العثور على نفسي.

شكرا جزيلا لك!

Wolfram.

هل كانت مفيدة؟

المحلول

أنا استخدم للقيام بذلك. أنا أساسا تحميل قائمة الألقاب ووضعها في نموذج النموذج الخاص بي. في نموذج النموذج، لدي أيضا متغير CurrentTITLEID أو SELECTTETLEID لتخزين قيمة العنصر المحدد. يتم تعيين اسم الحقل هذا في "المسار" من Combobox Spring ويتم تعيين Titlelist في "العناصر". ثم يتم تعيين القيمة التي تريد ربطها في "ItemValue" "ItemValue" والنص المراد عرضه لهذه القيمة في "ItemLabel". هذا هو.

في نموذج النموذج الخاص بي:

private int currentTitleId;
public long getCurrentTitleId() { return this.currentTitleId; }
public void setCurrentTitleId(long currentTitleId) { this.currentTitleId = currentTitleId; }

List titleList = getTitlesFromMyDatabaseHereOrSomewhereElse();

في بلدي JSP:

<form:label path="currentTitleId">Title</form:label>
<form:select path="currentTitleId" items="${formModel.titleList}" itemLabel="titleDescription" itemValue="titleId" />

أفترض أن فئة العنوان الخاصة بك ستكون مثل هذا:

class Title {
    public long getTitleId() { return this.titleId; }
    public long getTitleDescription() { return this.titleDescription; }
}

يمكنك أيضا تخصيص ComboBox أكثر قليلا مثل هذا:

    <form:select path="currentPhoneNumberId">
    <form:option value="">-</form:option>
    <c:forEach items="${formModel.phoneList}" var="phone">
        <form:option value="${phone.phoneNumberId}">${phone.phoneNumberId} - ${phone.description}</form:option>
    </c:forEach>
</form:select>

نصائح أخرى

لست متأكدا من تدفق شبكة الربيع، ولكن مع الربيع العادي MVC، يكفي تسجيل خاصية جديدة، ثم تعمل هذه الأشياء تلقائيا

http://static.springframework.org/spring/docs/2.5.x/Reference/Validation.html#beans-beans-conversion-customeditor- التسجيل

http://static.springframework.org/spring/docs/2.5.x/Reference/mvc.html#mvc-ann-webdatabinder.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top