JSF How to evaluate c:set only once at declaration place

39 Views Asked by At

I was using c:set as expression alias. Today I encountered, that c:set is evaluated everytime var is being used and also on each "invocation" it's output changes - depends on current context:

<!-- lets say composite has id "composite" -->
<ui:composition ...>
    <cc:implementation>
        <c:set var="compositeClientId" value="#{component.namingContainer.clientId}"/> 

        <!-- OUTPUTS "composite" -->
        <h:outputText value="#{compositeClientId}"/>       

        <h:form id="form">
            <!-- OUTPUTS "composite:form" -->
            <h:outputText value="#{compositeClientId}"/>    
        </h:form>
    <cc:implementation>    
</ui:composition>  

Is there any way, how to evaluate c:set at declaration place so in both cases it would output "composite"?

0

There are 0 best solutions below