سؤال

أنا أعرض ActionMessageS عبر 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 لديك في الصفحة أو الطلب أو الجلسة أو نطاق التطبيق.

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