jsf - how to show hide a h:panelgroup while click on a radio button -
i working on problem want show , hide fields under same <td>
depending upon user option. condition when user clicks on customer radio button have show input fields related customer , when clicks on seller option radio button have show him seller related information. default displaying panelgroup containing information related customer code follows
<h:panelgroup id="customnerpanel" rendered="#{salebean.salevo.persontype == 1}"> input fields related customer goes here </h:panelgroup> <h:panelgroup id="sellerpanel" rendered="#{salebean.salevo.persontype == 2}"> input fields related seller goes here </h:panelgroup>
now problem on page load shows me customer panel correct, when change radio button seller radio button should hide custoimer panel , show me seller panel rerendering both panels on change of radio buttons. radiobuttons related code follwos:
<h:selectoneradio id="radiochangetenurebutton" layout="linedirection" value="#{salebean.salevo.persontype}"> <f:selectitem id="customertypeid" itemlabel="for customer" itemvalue="1" /> <f:selectitem id="sellertypeid" itemlabel="for seller" itemvalue="2" /> <a4j:support event="onclick" action="#{salebean.updatecase}" rerender="customnerpanel,sellerpanel" /> </h:selectoneradio>
any ideas?
when rerendering elements result of ajax requests cannot hide component rerendering directly because jsf doesn't send hidden (which rendered attribute evaluates false) component browser , jsf has no idea element should hidden in dom. solve problem create wrapping element , rerender when performing ajax request. approach when response gets browser, html of hidden block missing , not in browser's dom. code should become this:
<h:panelgroup id="panelwrapper"> <h:panelgroup id="customnerpanel" rendered="#{salebean.salevo.persontype == 1}"> input fields related customer goes here </h:panelgroup> <h:panelgroup id="sellerpanel" rendered="#{salebean.salevo.persontype == 2}"> input fields related seller goes here </h:panelgroup> </h:panelgroup>
and should set id of wrapping component (panelwrapper in case) in rerender attribute of a4j:support.
Comments
Post a Comment