2014-09-22 9 views
7

Secondo la libreria di tag per http://xmlns.jcp.org/jsf/html, un h:panelGroup èpanelGroup senza stile o styleClass non sia resa meno che ID è dato

previsto per l'uso in situazioni in cui un solo bambino UIComponent possono essere nidificate, come ad esempio in il caso delle sfaccettature. Se gli attributi "style" o "styleClass" sono presenti e l'attributo "layout" è presente con un valore di "blocco", rendere un elemento "div" , in uscita il valore dell'attributo "stile" come valore dell'attributo "style" e il valore dell'attributo "styleClass" come valore dell'attributo "class". Altrimenti, se l'attributo "layout" non è presente, o l'attributo "layout" contiene un altro valore di " " blocco ", rendere un elemento" span ", emettendo il valore dell'attributo" style " come valore dell'attributo "stile" e del valore dell'attributo "styleClass" come valore dell'attributo "classe" .

In caso di

<h:panelGroup id="id" layout="block"> 
    <!-- ... ---> 
</h:panelGroup> 

o

<h:panelGroup layout="block" style="margin-right: 10px;"> 
    <!-- ... ---> 
</h:panelGroup> 

un div sia resa:

<div id="id"> 
</div> 

rispettivo

<div style="margin-right: 10px;"> 
</div> 

ma quando omettendo l'id (se uno non vuole update la panelGroup) o style (se non si vuole per lo stile delle panelGroup) quelli che il codice HTML risultante può rovinare senza div viene eseguito il rendering e disposizione. Inoltre esplorare la sfera di JSF, un panelGroup può anche essere utilizzato per rendere condizionale elementi figlio utilizzando il suo rendered bandiera ma come detto prima, quando omettendo i due menzionati attributi il ​​risultato è reso condizionatamente ma senza un div, come

<h:panelGroup layout="block" rendered="true"> 
<it>Without DIV.</it> 
</h:panelGroup> 

porta a

<it>Without DIV.</it> 

Dopo questa indagine voglio controllare con la comunità StackOverflow che ho capito giusto che quando non si utilizza un panelGroup come contenitore di denominazione o per lo stile consueto i suoi elementi uno è meglio risolvere il co parte di rendering nditional (se necessario) utilizzando un ui:fragment e la parte di layout con un codice codificato div. È così?

risposta

0

Nota: stiamo parlando se h:panelgroup eseguirà il rendering di qualsiasi componente HTML, ma a meno che render="false" i componenti interni non siano bloccati dal rendering in ogni caso.

L'albero comportamento del h:panelgroup si compone di due controlli:

  1. è almeno uno di "id" o "stile" o "styleClass" attributi impostati?
    Sì:
    a. Rende un <div> se layout = "block", altrimenti
    b. Genera un <span> (layout = "incomprensibile" o inesistente)

    No:

  2. Renders nessun componente html. Ancora utile se si desidera utilizzare "resa" o quando si può nido solo componente (vale a dire <f:facet>)

Il test per il layout attributo viene solo dopo 1., sopra. Poiché il tuo terzo esempio va nel ramo no, viene ignorato.

+0

Sarebbe essere in base alle specifiche che il 'rendering' viene ignorato se gli attributi menzionati in 1 non sono presenti? Quindi un ' BLA' è sempre visualizzato? (non è possibile controllare l'origine di un'implementazione o le specifiche dal mio telefono ora ...) Vedi https://stackoverflow.com/questions/43611107/hpanelgroup-body-still-executed-when-rendered-attribut-evaluate-to- false – Kukeltje

+0

@Kukeltje l'attributo reso impostato su false bloccherà il rendering sia del div/span che dei componenti interni a quel '' - quale indirizzo della domanda non è il controllo del rendering del componente, è uno di comportamento. – Mindwin

Problemi correlati