سؤال

لدي تطبيق JSF2 بسيط باستخدام FaceLets. تم تعيين web.xml على النحو التالي:-

<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping> 

أريد تعيين التطبيق على صفحة الترحيب التي هي /pages/login.xhtml. لا يمكنني الحصول على إعداد ملف الترحيب لالتقاط هذا عند الذهاب إلى جذر السياق في المتصفح.

إعداد الترحيب web.xml هو كما يلي:-

<welcome-file-list>
<welcome-file>/pages/login.jsf</welcome-file>
</welcome-file-list>

كيف يمكنني إجبار صفحة الترحيب على الحصول على صفحة تسجيل الدخول والتأكد من أنها تمر عبر الوجوه servlet؟

إذا استخدمت ما يلي الصفحة التي يتم عرضها ولكنها لم تمر عبر Servlet ، وبالتالي لا يتم تقديم مكونات الوجوه:-

<welcome-file-list>
<welcome-file>pages/login.xhtml</welcome-file>
</welcome-file-list>

أي مساعدة موضع تقدير!

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

المحلول

يجب عليك إنشاء ملف login.jsf فارغ ، بجوار ملف login.xhtml الخاص بك. لسبب ما ، هناك حاجة إلى هذا الاختراق لخداع حاوية Servlet للتفكير في وجود ملف الترحيب الخاص بك.

ملاحظة: ستظل الاستجابة المقدمة هي استجابة JSF باستخدام ملف login.xhtml الخاص بك ، وليس ملف login.jsf الفارغ الذي تقوم بإنشائه.

نصائح أخرى

معلومات إضافية إلى الحل الأصلي.

هذه ليست سوى حاجة إلى توافق متخلف لحاويات servlet قبل الإصدار 3. بمجرد تشغيل Glassfish 3.1 أو Tomcat 7 ، على سبيل المثال ، لم يعد مطلوبًا للحصول على ملف فارغ مثل هذا. قمت بإجراء اختبارات للتحقق من استخدام Tomcat 6 و Tomcat 7. في الماضي قمت بإجراء اختبارات مع Glassfish وافترضت أن مشكلة Tomcat 6 كانت في اللعب منذ أن ندير برنامجنا في Tomcat 6 في الوقت الحالي ، وهي ليست حاوية سعة 3.0 Servlet. كنت أستخدم صفحة JSP مع إعادة توجيه ، لكن بعد الانتقال تمامًا إلى وجهات تجميل ، لم يعجبني بعد أن تركت واحدة على صفحة JSP. هذا حل رائع للقطر القريب حتى نركض في حاوية سعة 3.0 servlet. السبب الحقيقي الذي يجعله يعمل هو أن كل شيء يجري مع إدخال web.xml هو فحص لوجود الملف. يتم التعامل مع العمل الحقيقي مع JSF لأنه يمسك بصفحة الوجوه ، وبالتالي فإنه لا يضرب تلك الصفحة الفارغة لأي شيء.

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