为什么a4j:输出不会重新渲染父面板

时间:2010-08-11 20:04:45

标签: jsf richfaces

我遇到以下错误: 我在一个文件中有一个selectOneRadio,它使用a4:support来调用服务器端的东西。 问题是我需要reRender一个包含在一系列包含的最外层文件中的选项卡组件。 reRender在这种情况下显然不起作用。 这是代码: 我的MBean:

public String mudarForcaTrabalho(){
 InstrutorBaseVO instrutor = getDados();
 setDados(ManterInstrutorHelper.transformarInstrutor(instrutor));
 setInterno(!isInterno());
 return null;
}

我最外面的文件:manter.xhtml

<h:panelGroup id="pnMaster">
-<h:outputText id="txForca2" value="#{instrutorMB.dados.forcaDeTrabalho}"  />-
<rich:tabPanel switchType="client" id="painelTabs">
       <rich:tab id="tabBasicas" label="#{msg.INFO_BASICAS}">
  <div style="padding:5px;"><ui:include src="informacoesBase.xhtml"/></div>
       </rich:tab>
       <rich:tab id="tabLocal" label="#{msg.INFO_LOCALIZACAO}" rendered="#{instrutorMB.dados.forcaDeTrabalho == 'N'}">
        <div style="padding:5px;"><ui:include src="informacoesLocalizacao.xhtml"/></div>
    </rich:tab>
       <rich:tab id="tabDetalhe" label="#{msg.INFO_DETALHADAS}">
           <div style="padding:5px;"><ui:include src="informacoesDetalhadas.xhtml"/></div>
       </rich:tab>
</rich:tabPanel>
</h:panelGroup>

我的内部文件:informacoesBase.xhtml

 <h:panelGroup id="painelPai">
 <fieldset>

  <h:panelGroup id="pnTeste">
  -<h:outputText id="txForca" value="#{instrutorMB.dados.forcaDeTrabalho}"  />-
  </h:panelGroup> 
  <legend>#{msg.MSG_PERTENCE_FORCA}*</legend>

   <h:selectOneRadio id="rdForcaTrabalho" value="#{instrutorMB.dados.forcaDeTrabalho}" disabled="#{instrutorMB.visualizar}">
   <f:selectItem itemValue="S" itemLabel="#{msg.SIM}"/>
   <f:selectItem itemValue="N" itemLabel="#{msg.NAO}"/>
   <a4j:support ajaxSingle="true" event="onchange" immediate="true" reRender="pnMaster" action="#{instrutorMB.mudarForcaTrabalho}"/>
   </h:selectOneRadio>

 </fieldset>

 </h:panelGroup>

感谢任何帮助。谢谢。

3 个答案:

答案 0 :(得分:2)

我猜您的文件不在同一h:formaj4:form

ReRender适用于相同形式的组件。

答案 1 :(得分:1)

  

ReRender适用于相同形式的组件。

使用reRender时,组件不需要采用相同的形式。他们可以在任何地方。尝试通过添加formId指向reRender:

reRender=":formId:componentId"

答案 2 :(得分:1)

onchange事件仅适用于以下控件: fileUpload,select,text,textarea。因此它与单选按钮不匹配,您必须使用“onselect”,如下所示:

<a4j:support ajaxSingle="true" event="onselect" immediate="true" reRender="pnMaster" action="#{instrutorMB.mudarForcaTrabalho}"/>