【问题标题】:JSF, a4j:support and rich:pickList, rerender [duplicate]JSF,a4j:支持和丰富:pickList,重新渲染[重复]
【发布时间】:2016-10-08 09:16:30
【问题描述】:

如果在选择列表中选择了一个值,我会尝试显示 <a4j:outputPanel>

我的html,第一个picklist触发事件重新渲染第二个picklist

                                <li class="clearfix"><label class="desc"><sup>*</sup>
                                        <h:outputText value="Services :" /></label>
                                    <div>
                                        <span class="full"> <rich:pickList id="pickService"
                                                value="#{GroupeController.listServices}"
                                                copyAllControlLabel="Tout copier"
                                                removeAllControlLabel="Tout supprimer"
                                                copyControlLabel="Copier" removeControlLabel="Supprimer">



                                                <a4j:support event="onlistchange" ajaxSingle="true" reRender="test" />



                                                <f:selectItems
                                                    value="#{GroupeController.getListTypeGroupeServices()}" />
                                                <f:facet name="copyAllControlDisabled">Tout copier
                                                </f:facet>
                                                <f:facet name="removeAllControlDisabled">Tout supprimer
                                                </f:facet>
                                                <f:facet name="copyControlDisabled">Copier
                                                </f:facet>
                                                <f:facet name="removeControlDisabled">Supprimer
                                                </f:facet>
                                            </rich:pickList>
                                        </span> <label><rich:message errorLabelClass="req"
                                                for="pickService" /></label>
                                    </div></li>
                            </a4j:outputPanel>





                            <a4j:outputPanel id="test" rendered="#{GroupeController.test()}" >
                                <li  class="clearfix"><label class="desc">
                                        <h:outputText value="ACL existantes :" /></label>
                                    <div>
                                        <span class="full"> <rich:pickList id="pickACL"
                                                value="#{GroupeController.listACLSelect}"
                                                copyAllControlLabel="Tout copier"
                                                removeAllControlLabel="Tout supprimer"
                                                copyControlLabel="Copier" removeControlLabel="Supprimer">
                                                <f:selectItems
                                                    value="#{GroupeController.getAllACL()}" />
                                                <f:facet name="copyAllControlDisabled">Tout copier
                                                </f:facet>
                                                <f:facet name="removeAllControlDisabled">Tout supprimer
                                                </f:facet>
                                                <f:facet name="copyControlDisabled">Copier
                                                </f:facet>
                                                <f:facet name="removeControlDisabled">Supprimer
                                                </f:facet>

                                            </rich:pickList>
                                        </span> <label><rich:message errorLabelClass="req"
                                                for="pickACL" /></label>
                                    </div></li>
                            </a4j:outputPanel>
                        </a4j:outputPanel>
                        <a4j:commandButton id="idAjouter" value="Ajouter"
                            action="#{GroupeController.ajouterGroupe()}"
                            onclick="#{rich:component('wait')}.show()" reRender="form,error"
                            limitToList="true" oncomplete="#{rich:component('wait')}.hide()" />
                    </rich:panel>
                </a4j:outputPanel>
            </h:form>
        </rich:layoutPanel>

并且控制器中有 test() 函数:

public boolean test() {

    if (listServices == null) {
        return false;
    } else {

        boolean test = false;
        for (String s : listServices) {
            if (Integer.parseInt(s) == 2) {
                test = true;
            }
        }

        return test;

    }
}

当我在选择列表中选择 ID 为 2 的项目时,我的函数被调用并返回 true,但第二个选择列表仍然不显示

谢谢你,对于英文错误的注释我很抱歉,我是所有这一切的新手

泽尔'

【问题讨论】:

    标签: jsf richfaces ajax4jsf picklist


    【解决方案1】:

    我终于找到了答案:JSF ReRender support with selectBooleanCheckbox

    所以有正确的代码,重新渲染的目标已经改变,我已经把我的元素放在一个包装器中显示。

    <a4j:outputPanel>
    
                                    <li class="clearfix"><label class="desc"><sup>*</sup>
                                            <h:outputText value="Services :" /></label>
                                        <div>
                                            <span class="full"> <rich:pickList id="pickService"
                                                    value="#{GroupeController.listServices}"
                                                    copyAllControlLabel="Tout copier"
                                                    removeAllControlLabel="Tout supprimer"
                                                    copyControlLabel="Copier" removeControlLabel="Supprimer">
                                                    <a4j:support event="onlistchange" ajaxSingle="true" reRender="testWrapper" />
                                                    <f:selectItems
                                                        value="#{GroupeController.getListTypeGroupeServices()}" />
                                                    <f:facet name="copyAllControlDisabled">Tout copier
                                                    </f:facet>
                                                    <f:facet name="removeAllControlDisabled">Tout supprimer
                                                    </f:facet>
                                                    <f:facet name="copyControlDisabled">Copier
                                                    </f:facet>
                                                    <f:facet name="removeControlDisabled">Supprimer
                                                    </f:facet>
                                                </rich:pickList>
                                            </span> <label><rich:message errorLabelClass="req"
                                                    for="pickService" /></label>
                                        </div></li>
                                </a4j:outputPanel>
                                <h:panelGroup id="testWrapper">
                                    <a4j:outputPanel id="test" rendered="#{GroupeController.test()}" >
                                        <li  class="clearfix"><label class="desc">
                                                <h:outputText value="ACL existantes :" /></label>
                                            <div>
                                                <span class="full"> <rich:pickList id="pickACL"
                                                        value="#{GroupeController.listACLSelect}"
                                                        copyAllControlLabel="Tout copier"
                                                        removeAllControlLabel="Tout supprimer"
                                                        copyControlLabel="Copier" removeControlLabel="Supprimer">
                                                        <f:selectItems
                                                            value="#{GroupeController.getAllACL()}" />
                                                        <f:facet name="copyAllControlDisabled">Tout copier
                                                        </f:facet>
                                                        <f:facet name="removeAllControlDisabled">Tout supprimer
                                                        </f:facet>
                                                        <f:facet name="copyControlDisabled">Copier
                                                        </f:facet>
                                                        <f:facet name="removeControlDisabled">Supprimer
                                                        </f:facet>
    
                                                    </rich:pickList>
                                                </span> <label><rich:message errorLabelClass="req"
                                                        for="pickACL" /></label>
                                            </div></li>
                                    </a4j:outputPanel>
                                </h:panelGroup>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 2011-06-14
      • 2012-11-17
      • 2013-05-10
      相关资源
      最近更新 更多