مزيج HTML و JSF في فرعي JSF
-
19-09-2019 - |
سؤال
المشكلة التي لدي اليوم حول التعامل مع HTML في JSP المضمنة، مع JSF. إذن إليك الوضع: أستخدم JSF 1.2 من قبل IBM على RAD مع WebSphere V6.1 لدي مكون مخصص (من طبقة الشركة) لاستخدام علامات التبويب. وللحصول على رمز نظافة، أريد فقط فصل رمز JSF لكل علامة تبويب في JSP مفصولة، بهذه الطريقة، Main.jsp:
<customTag:tabComponent>
<jsp:include page="/jsp/workflow/tab1.jsp"></jsp:include>
<div align="right">
<customTag:switchToTab title="Next" tabValue="2"></customTag:switchToTab>
</div>
</customTag:tabComponent>
و my tab1.jsp:
<!-- Taglibs declared here -->
<f:verbatim>
<div id="myDivId">
<fieldset>
<legend>myLegend</legend>
<h:outputText value="#{myBean.someContent}"></h:outputText>
<!-- HERE are a lot of JSF components, selectItems, inputText... -->
</fieldset>
</div>
</f:verbatim>
لذلك تتم معالجة مكونات JSF، ولكن يبدو أن HTML يعالج بعد ويظهر بعد، خارج HTML الناتج عن JSF. شيء مثل
<table>
<!-- generated content -->
</table>
<div id="myDivId">
...
على الرغم من أن الجدول يجب أن يكون داخل div. حاولت استخدام <f:verbatim>
ضع علامة على طرق مختلفة، وكان الحل الوحيد هو المحيط <div>
و </div>
بواسطة علامات فتح وإغلاق Verbatim، وهي قذرة وتجعل WebSphere مجنونا.
لم تجد Google أي شيء مناسب، وكذلك اللاعبين الذين واجهوا بالفعل نفس المشكلة؟ هل من الممكن العثور على حل نظيف أو يجب علي تضمين كل التعليمات البرمجية داخل نفس JSP؟ شكرا لك مقدما.
المحلول
بادئ ذي بدء، يمكن التعرف على سلوك Legacy JSF 1.0 / 1.1. ال f:verbatim
كان مطلوبا بالفعل اتخاذ نص القالب في شجرة مكون JSF. ومع ذلك، و f:verbatim
غير ضروري تماما منذ معالج الرؤية الجديدة في JSF 1.2 من 2006 الذي يأخذ تلقائيا أي نص قالب في الداخل f:view
في شجرة المكون. وهكذا، هل أنت هل حقا باستخدام JSF 1.2؟ WebSphere 6.1 السفن مع المكتبات المدمجة JSF 1.1 والترقية إلى 1.2 ليست سهلة مثل وضع Libs فقط /WEB-INF/lib
.
بالنسبة لمشكلتك الفعلية، تحتاج إلى التفاف فقط نص القالب مع f:verbatim
, وليس مكونات JSF بالملائمة. وبالتالي، يجب أن تعمل ما يلي:
<f:verbatim>
<div id="myDivId">
<fieldset>
<legend>myLegend</legend>
</f:verbatim>
<h:outputText value="#{myBean.someContent}"></h:outputText>
<!-- HERE are a lot of JSF components, selectItems, inputText... -->
<f:verbatim>
</fieldset>
</div>
</f:verbatim>