2012-05-15 8 views
6

मैं विजुअलफॉर्स पेज से क्लीन एक्सएसएल-एफओ उत्पन्न करने की कोशिश कर रहा हूं। लेकिन विजुअलफॉर्स पेज से बाहर आने वाला एक्सएमएल खाली स्पेन टैग के कारण मान्य नहीं है जो नेस्टेड एपेक्स द्वारा उत्पन्न किया जा रहा है: आउटपुट पैनेल टैग (बाहरी रेंडर = सत्य, आंतरिक rendered = false)।शीर्ष से खाली अवधि टैग के बिना नेस्टेड सशर्त प्रतिपादन कैसे प्राप्त करें: outputPanel?

<apex:page contentType="text/xml" cache="false" showHeader="false" sidebar="false"> 
    <root> 
     There is no reason for a nested apex:outputpanel to generate a span tag like this: 

     <apex:outputPanel layout="none" rendered="true"> 
      <apex:outputPanel layout="none" rendered="false" /> 
     </apex:outputPanel> 

     This breaks strict xml documents like XSL-FO. 
    </root>   
</apex:page> 

कि पेज इस एक्सएमएल उत्पादन देता है:: यहाँ एक केंद्रित पेज है कि समस्या को दिखाता है

सुप्रीम:

<root> 
    There is no reason for a nested apex:outputpanel to generate a span tag like this: 

    <span id="j_id0:j_id3" style="display: none;"></span> 

    This breaks strict xml documents like XSL-FO. 
</root> 

वास्तव में, मैं docs में एक अस्पष्ट कारण मिला : outputPanel लेआउट विशेषता - पैनल के लिए लेआउट शैली। संभावित मानों में "ब्लॉक" (जो एक HTML div टैग उत्पन्न करता है), "इनलाइन" (जो एक HTML स्पैन टैग उत्पन्न करता है), और "none" (जो HTML टैग उत्पन्न नहीं करता है) शामिल है। यदि निर्दिष्ट नहीं है, तो यह मान "none" पर डिफ़ॉल्ट है। हालांकि, यदि लेआउट को "कोई नहीं", पर सेट किया गया है, तो प्रत्येक बच्चे तत्व के लिए "झूठी" पर सेट की गई विशेषता के साथ, आउटपुटपैनल प्रत्येक बच्चे की आईडी के साथ एक स्पैन टैग उत्पन्न करता है, और एक शैली विशेषता "डिस्प्ले" पर सेट होती है: कोई नहीं "। इस प्रकार, जब सामग्री दिखाई नहीं दे रही है, जावास्क्रिप्ट अभी भी डीओएम आईडी के माध्यम से तत्वों तक पहुंच सकता है।

उपयोगी लगता है अगर मेरी सामग्री प्रकार HTML या जावास्क्रिप्ट है, लेकिन यह मेरा सख्त xml तोड़ रहा है। तो सवाल यह है कि: स्पैन टैग से बचते समय मैं नेस्टेड सशर्त प्रतिपादन कैसे प्राप्त कर सकता हूं?

+1

सोचो मैं इस एक खोज निकाला है। दोनों या केवल बाहरी को बाहरी पर स्विच करें: इस तरह परिवर्तनीय: ' ' – twamley

+0

मुझे कल्पना है कि आप लेआउट =" none "के साथ एक कस्टम विजुअलफोर्स घटक बना सकते हैं और कोई विशेष तर्क नहीं है जिसमें यह क्विर्क नहीं है, नहीं? –

उत्तर

6

स्विच दोनों, या सिर्फ बाहरी, एक शीर्ष करने के लिए: चर इस तरह:

<apex:variable rendered="true" value="" var="tempOuter"> 
    <apex:outputPanel layout="none" rendered="false" /> 
</apex:variable> 
+0

हाय, बस इस समाधान को मिला, धन्यवाद, मेरे लिए बहुत अच्छा काम किया। – jkraybill

+0

यह ब्रिलेंट है! –