This page (revision-63) was last changed on 26-Mar-2013 12:05 by Dieter Käppel

This page was created on 07-Jun-2009 20:54 by Dieter Käppel

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
63 26-Mar-2013 12:05 26 KB Dieter Käppel to previous
62 26-Mar-2013 12:05 26 KB Dieter Käppel to previous | to last
61 24-Nov-2012 12:00 26 KB Dieter Käppel to previous | to last

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 96 added 51 lines
!!!Tag "clear"
Bei verschachtelter Anwendung des meta-Tags werden Facelet-Parameter unkontrolliert in innere Facelets weiter gegeben. Insbesondere gefährdet ist ui:insert, da hier Facelets generisch eingefügt werden.
Dies findet bei ui:include und ui:param ebenso statt, wie bei der Definition von Tags in der Facelets-Taglib. Um dies zu verhindern, steht der Intersult clear-Tag zur Verfügung:
{{{
<i:clear var="id,label">
<ui:insert/>
</i:clear>
}}}
Was geschieht hier? Der clear-Tag verhindert die weitere Propagierung der UIParameter (also auch Tag-Attribute) "id" und "label".
!Beispiel inputGroup
Das Beispiel soll den Nutzen des clear-Tags verdeutlichen. Zunächst wird ein Tag eingesetzt, der die Gruppierung von Eingabefeldern vornimmt:
{{{
<i:inputGroup label="Gruppe">
<i:inputText id="test" value="#{test}"/>
</i:inputGroup>
}}}
Die Implementierung der inputGroup ist wie folgt:
{{{
<i:meta var="comp" useId="#{id}" rendered="#{empty rendered or rendered}">
<fieldset id="#{comp.clientId}">
<legend>
<h:outputText value="#{label}"/>
</legend>
<i:clear var="id,label">
<ui:insert/>
</i:clear>
</fieldset>
</i:meta>
}}}
Die Implementkerung von inputText:
{{{
<i:meta var="comp" useId="#{id}" rendered="#{empty rendered or rendered}">
<h:panelGrid>
<h:inputLabel for="#{comp.id"} value="#{empty label ? 'Default' : label}"/>
<h:inputText id="#{comp.id}" value="#{value}"/>
<i:message id="#{comp.id}-message" for="#{comp.id}"/>
</h:panelGrid>
</i:meta>
}}}
Der Tag inputText enthält wieder eine Referenz auf die Variable Label. Ohne Verwendung des clear-Tag wäre diese nun auf den äußeren Wert gesetzt, da der inputGroup-Tag den Wert nach innen hinein propagiert.