kosa
kosa

Reputation: 66637

JSF/Facelets ajax view render issue

I have a .xhtml with two commandlink buttons and two outputpanels. Everything inside same form. When I click on commandlink why do I need to explicitly say which output panels need to be rendered? If nothing specified, shouldn't entire view re-constructed based on following description from Spec (or) Am I mixing things?

As well as do we really need to set action="navigation-rule" when we want to refresh a component in same view?

Link controls are typically used to perform complete form submissions for data storing.
As a consequence, the <a4j:commandLink> component has the execute="@form" setting by default. 

Any input is much appreciated.

Here is code for reference:

 <h:form>
        <div>
            <a4j:outputPanel layout="block">
                <!--Tab1 -->
                <a4j:commandLink
                    id="homeTabLinkId"
                    value="Tab1"
                    actionListener="somelistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>
                <!--Hosts Tab -->
                <a4j:commandLink 
                    id="hostsTabLinkId"
                    value="Tab2"
                    actionListener="anotherlistener" render="contentDIVId">
                    <h:outputText value=""/>
                </a4j:commandLink>


            </a4j:outputPanel>
        </div>

        <a4j:outputPanel layout="block" id="contentDIVId">
            <!-- dynamically gets src based on tab click -->
            <ui:include id="tabBodyPanel" src="elexpression"/>
        </a4j:outputPanel>

        <a4j:outputPanel layout="block" id="anotherdiv">
            <h:outputText value="Inside second div"/>
        </a4j:outputPanel>

    </h:form> 

Upvotes: 0

Views: 382

Answers (1)

BalusC
BalusC

Reputation: 1108577

If nothing specified, shouldn't entire view re-constructed based on following description from Spec (or) Am I mixing things?

That applies only to synchronous requests. Replace <a4j:commandLink> by <h:commandLink> and you'll get the described behaviour.


As well as do we really need to set action="navigation-rule" when we want to refresh a component in same view?

No. The action method can just return null or void. Otherwise the view will be recreated and that isn't what you want if you've view scoped beans on the view.

Upvotes: 3

Related Questions