الدعامات 1 - كيفية عرض ActionMessages
سؤال
أنا أعرض ActionMessage
S عبر JSP
ملف حسب الأمر التالي:
<logic:messagesPresent message="true">
<ul id="messsages">
<html:messages id="msg" message="true">
<li><bean:write name="msg"/> </li>
</html:messages>
</ul>
</logic:messagesPresent>
الآن أريد عرض رسائل محددة فقط. كيف يمكنني الإشارة إلى أي رسالة لعرضها؟
محدث
في الواقع لدي اثنين ActionMessages
هدف - messages
و warnings
وبعد الآن أريد عرض كل منهما في منفصلة JSP
الصفحة ... صفحة واحدة لإظهارها messages
وغيرها من أجل warnings
.
فكيف تشير في JSP
الصفحة التي الرسائل التي تعرضها؟
تم التحديث - 2.
الآن، وجدت شيئا غريبا.
saveMessages(request, messages);
saveMessages(request, warnings);
عندما كتبت الرمز أعلاه، فقط warnings
كان يعمل. عندما عكس ترتيب البيانات المذكورة أعلاه، ثم فقط messages
كان يعمل.
يبدو أنه يمكننا إضافة واحد فقط ActionMessages
كائن في الطلب. إذا كان صحيحا، فهذا كيفية عرض الرسائل في قسمين ActionMessages
الكائنات بشكل منفصل.
المحلول
بسيط،
افصل messages
وخاصتك warnings
: في عملك الدعامات، احفظ رسائلك وتحذيراتك على النحو التالي:
//For messages
saveMessages(request, messages);
//For warnings
saveErrors(request, warnings);
لعرضها:
<logic:messagesPresent message="true">
<html:messages id="aMsg" message="true">
<logic:present name="aMsg">
<!-- Messages -->
<div class="messages">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
<logic:messagesPresent message="false">
<html:messages id="aMsg" message="false">
<logic:present name="aMsg">
<!-- Warnings-->
<div class="warnings">
<bean:write name="aMsg" filter="false" />
</div>
</logic:present>
</html:messages>
</logic:messagesPresent>
هذا يعرض الكل messages
(عن طريق الإعداد message="true"
)
<html:messages id="aMsg" message="true">
هذا يعرض الكل warnings
(عن طريق الإعداد message="false"
)
<html:messages id="aMsg" message="false">
تحديث وإذ يرى أنك تقوم الآن بإزالة سؤالك، فإن أبسط طريقة هي القيام بذلك.
لديك إشارة معينة تشير إلى ما إذا كان المستخدم يرغب في عرض messages
أو warnings
. وبعد على إجراء الدعامات، طلب العلم والتحقق مما إذا كان المستخدم المحدد عرض الرسائل أو التحذيرات. ثم حفظ إما warnings
أو messages
بناء على اختيار المستخدم وعرض نفس الصفحة (كما كتبت أعلاه) لعرض الرسائل.
السبب في ذلك، يخزن الدعامات (عند تخزين الرسائل أو الأخطاء) عند الطلب أو جلسة مع ثابتة التالية.
- globals.message_key (تم تعيينه عند القيام به
saveMessages(request, messages)
) - globals.error_key (تم تعيينه عند القيام به
saveErrors(request, errors)
)
عند استخدام <logic:messagesPresent message="true">
, ، يبحث الدعامات عن MESSAGE_KEY
(إذا كانت الرسالة = صحيح) أو ERROR_KEY
(إذا كانت الرسالة = خطأ) أو كليهما (إذا كانت الرسالة = لا شيء). ليس لديك سيطرة على ذلك.
<html:messages />
تنص تعليقات TLD:
افتراضيا، ستقوم العلامة باسترداد الفاصوليا، وسوف تتكرر من سلسلة Globals.Error_Key،
ولكن إذا تم تعيين هذه السمة على "صحيح"، فسيتم استرجاع الفول من سلسلة Globals.message_key الثابتة. أيضا إذا تم ضبط هذا على "صحيح"، فسيتم تجاهل أي قيمة تم تعيينها إلى سمة الاسم.
يمكنك أيضا كتابة Scriptlet للتحقق مما إذا كانت هذه المفاتيح موجودة، ثم <logic:iterate />
من خلال المفتاح لعرض الرسائل (ولكن هذا سيكون الكثير من العمل).
أتمنى أن يساعدك هذا.
نصائح أخرى
بدلا من استخدام message
سمة على messagesPresent
و messages
العلامات، يمكنك استخدام name
السمة لتحديد اسم كائن ActionMessages لديك في الصفحة أو الطلب أو الجلسة أو نطاق التطبيق.