隐藏a4j:outputPanel并在提交a4j命令按钮时显示它

时间:2010-07-04 13:57:16

标签: ajax jsf richfaces ajax4jsf

从现在开始,我有这个:

.....
<a4j:commandButton  action="#{ChoixContratBean.Submit1}" reRender="suite" value="valider"  > </a4j:commandButton>
        </a4j:outputPanel>

    <a4j:outputPanel display="none" id="suite">
    <jsf:outputText id="reponseeFormule"............

哪个有效。套件面板被重新渲染。但我想隐藏这个名为suite的输出面板。并在用户通过commandButton验证后显示...我无法知道如何操作,任何人都有想法?

谢谢你!

1 个答案:

答案 0 :(得分:1)

好的,我终于在下班后发现了。 (我在搜索后发布了这个问题,我是富人脸的初学者)

这不是很复杂,但是你不想陷入一个小陷阱。最终的代码看起来像这样:

     ......<a4j:outputPanel id="check">
    <richfaces:panel rendered="#{ChoixContratBean.essaiValid}">
    <jsf:outputText value="#{ChoixContratBean.check}" /></richfaces:panel>
        </a4j:outputPanel>                  
    </td>               
   </tr>                
 </table>
</richfaces:simpleTogglePanel> 
    <a4j:commandButton  action="#{ChoixContratBean.Submit1}" reRender="suite, check" value="valider"> </a4j:commandButton>  
        <a4j:outputPanel id="suite" >
<richfaces:simpleTogglePanel rendered="#{ChoixContratBean.suite}" switchType="ajax"......

首先,outputPanel必须呈现为true或ajax不会触及它。这是我的第一个错误,我以为我可以使outputPanel渲染=“#{ChoixContrat.someBool},并在链接到命令按钮的ajax动作中更改它。但是,如果它首次设置为render = false,则ajax赢了” t能够将其更改为true,因为它首先无法访问!您必须在后面的bean中设置render = some boolean,其中包含要隐藏的内容以及outputPanel id = suite中的内容对于我的例子。这样,outputPanel总是被渲染,但是无论你的对手的属性渲染在后面,在ajax方法中是否设置为false或者true,其中的组件将保持隐藏或可见。

希望我很清楚,因为我是法国人.....