ui:param
benim için en iyi yol. Bu sadece doğru yolu kullanma meselesi. Basit bir örnek olarak, bir kenar çubuğu olup olmadığını belirlemek için burada bir param tanımlar. şablonda varsayılan bir ekleme tanımını tanımlayabilir unutmayın, bu yüzden sadece içeride beyan:
template.xhtml görüşlerin Sonra çift burada
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html">
<ui:insert name="sidebar">
<!-- By default, there's no sidebar, so the param will be present.
When you replace this section for a sidebar in the client template,
the param will be removed from the view -->
<ui:param name="noSideBar" value="true" />
</ui:insert>
<div class="#{noSideBar ? 'style1' : 'style2'}">
<ui:insert name="content" />
</div>
</ui:composition>
, tek kenar çubuğu ve diğer kullanılarak kenar çubuğu yok. Test edebilir ve tarayıcının stilinin nasıl değiştiğini görebilirsiniz. Herhangi bir EL koşullu ifadesinde false
değerini değerlendirecek olan ikinci birimde #{noSideBar}
için bir değer olmadığını fark edeceksiniz.
page1.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" template="/template.xhtml">
<ui:define name="content">
No sidebar defined? #{noSideBar}
</ui:define>
</ui:composition>
page2.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets" template="/template.xhtml">
<ui:define name="sidebar" />
<ui:define name="content">
No sidebar defined? #{noSideBar}
</ui:define>
</ui:composition>
yalnızca istemci görünümünde kenar çubuğu veya olmasın dahil endişelenmenize gerek Bu şekilde.
Teşekkür ederim, bu şekilde düşünmedim, yakında deneyeceğim! –