Jsf h:选择一个菜单,更新模型,不更新视图

Jsf h:选择一个菜单,更新模型,不更新视图,jsf,Jsf,我是JSF新手,在使用h时面临一个问题:selectOneMenu。selectiononeMenu有三个selectionItem值(全部、选中、未选中)。每当我更改下拉列表的值时,就会触发值更改侦听器并更新视图。 我必须引入一个按钮,它总是将下拉列表的值设置为All。作为按钮操作的一部分,我正在创建一个UISelectOne并将值设置为All。实际上,这里的模型正在更新。但下拉选择视图未得到更新。它仍然显示旧的值 请帮我解决这个问题 ActiveTable.xhtml: <!DOCTY

我是JSF新手,在使用h时面临一个问题:selectOneMenu。selectiononeMenu有三个selectionItem值(全部、选中、未选中)。每当我更改下拉列表的值时,就会触发值更改侦听器并更新视图。 我必须引入一个按钮,它总是将下拉列表的值设置为All。作为按钮操作的一部分,我正在创建一个UISelectOne并将值设置为All。实际上,这里的模型正在更新。但下拉选择视图未得到更新。它仍然显示旧的值

请帮我解决这个问题

ActiveTable.xhtml:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
......
</style>
    <!-- Remember to keep the script up to date whenever you change the ids or Hierarchy of components -->
    <script type="text/javascript">
        ....  
</script>

    <style>
.headerExtended {
    height: 70px;
}
</style>
    <f:view id="tableview"
        locale="#{sessionScope.WW_TRANS_I18N_LOCALE}">
        <h:panelGroup id="unsuccessfulAttemptsmsg"
            .....
        </h:panelGroup>
        <f:loadBundle basename="OMAgentResources" var="bundle" />

        <div
            style="padding: 15px 0px 25px 0px; border: none; margin-bottom: 50px;">
            <h:form id="activeForm" prependId="false">
                <a4j:region ajaxRendered="true" id="activeRegion">
                    <a4j:push id="ajaxPush" address="activeTopic" enabled="true"
                        interval="0">
                        <a4j:ajax event="dataavailable" render="activeForm" />
                    </a4j:push>
                    <a4j:outputPanel id="messagePanel" ajaxRendered="true">
                        <h:messages />
                    </a4j:outputPanel>
                    <br />
                    <h:panelGrid id="activeTablePanel" columns="1"
                        styleClass="otContentAreaAlign" width="100%">

                        <!-- EXTENDED DATA TABLE  -->
                        <rich:extendedDataTable value="#{alctiveBean.rowData}"
                            var="row" id="activeTable"
                            rows="#{preferencesBean.batchValue}" selectionMode="none"
                            style="width: 1177px;" onRowMouseOut="mouseOutRichRow(this)"
                            onRowDblClick="wuiDataTableSelectRow(this)" sortMode="single"
                            frozenColumns="2" showColumnControl="true"
                            onrowmousemove="collapseDropDown()">

                            <!-- Column for ack/clr selection -->
                            <rich:column id="ackclrColumn"
                                style="text-align:center;white-space: nowrap;"
                                headerClass="headerExtended" width="115px">
                                <f:facet name="header" id="ackclrHeader">
                                    <h:outputText id="tableformenabledcolumnheadersmall"
                                        value="#{bundle.active_page}" />
                                         <h:panelGroup id="selectionFilterPanel">
                                        <h:selectOneMenu id="selectionFilter" 
                                            valueChangeListener="#{activeBean.selectionChangeListener}"
                                            style="text-align:center;">
                                            <f:selectItems value="#{activeBean.selectionList}" />
                                            <a4j:ajax event="change" execute="@this"
                                                    render="activeTablePanel,activeTableButtonPanel" />
                                        </h:selectOneMenu>
                                        </h:panelGroup>
                                </f:facet>
                            </rich:column>
                        </rich:extendedDataTable>
                    </h:panelGrid>
                </a4j:region

                    <h:panelGrid columns="1" id="activeTableButtonPanel"
                        style="width: 1190px; align:center">
                        <!-- Command buttons -->
                        <h:panelGroup>

                            <a4j:commandButton id="clearFiltersButtonId"
                                value="#{bundle.activebrowser_page_clr_flt}"
                                action="#{activeBean.clearFiltersAction}"
                                disabled="#{!activeBean.isFilterActive}"
                                render="activeTable,activeTableButtonPanel"
                                rendered="true"
                                style="text-align:center"/>
                        </h:panelGroup>
                    </h:panelGrid>
            </h:form>
        </div>
    </f:view>
</ui:composition>
</html>
clearFiltersAction:

public synchronized String clearFiltersAction(){
        log.info("activerBean: clearFiltersAction triggered.");
        String msg = myResourceBundle.getString("general_page_doneresponse");
        myMessageContainer.setMessage(msg);
        setFacesMessage(MessageType.MESSAGE_INFO, msg);
        log.info("ActiveBean: clearFiltersAction :" + msg);
        AlarmFilter filters[] = myFilterSelector.getFilters();
        for (int i=0; i < filters.length; ++i){
            filters[i].clearFilter();
        }

        String allEnum = ((EnumerationFilter) myFilterSelector.getFilter(
                FilterSelector.SELECTIONFILTER)).getAllEnumValue();
        log.info("ActiveBean: clearFiltersAction : clearing SELECTIONFILTER");
        UISelectOne one = (UISelectOne) theSelectionFilter;
        one.isRendered();
        if (one != null) {
            one.setValue(allEnum);
            log.info("ActiveBean: clearFiltersAction : resetting SELECTIONFILTER to ALL");
        }

        EnumerationFilter enumFilter =
                (EnumerationFilter)myFilterSelector.getFilter(FilterSelector.SELECTIONFILTER);

        enumFilter.setSelections(new String[]{allEnum});

        refreshIterator(true);  
        return null;//stay in the same page
    }
公共同步字符串clearFiltersAction(){
log.info(“activerBean:clearFiltersAction已触发”);
String msg=myResourceBundle.getString(“常规页面响应”);
设置消息(msg);
setFacesMessage(MessageType.MESSAGE_INFO,msg);
log.info(“ActiveBean:clearFiltersAction:+msg”);
AlarmFilter filters[]=myFilterSelector.getFilters();
对于(int i=0;i

提前感谢

您应该包括您的代码、HTML和支持bean java代码!另请参见和\感谢您的回复。。我已经更新了相同的代码。。。请帮我解决这个问题。谢谢你的回复。我现在已经包含了代码。请帮我解决同样的问题。。
public synchronized String clearFiltersAction(){
        log.info("activerBean: clearFiltersAction triggered.");
        String msg = myResourceBundle.getString("general_page_doneresponse");
        myMessageContainer.setMessage(msg);
        setFacesMessage(MessageType.MESSAGE_INFO, msg);
        log.info("ActiveBean: clearFiltersAction :" + msg);
        AlarmFilter filters[] = myFilterSelector.getFilters();
        for (int i=0; i < filters.length; ++i){
            filters[i].clearFilter();
        }

        String allEnum = ((EnumerationFilter) myFilterSelector.getFilter(
                FilterSelector.SELECTIONFILTER)).getAllEnumValue();
        log.info("ActiveBean: clearFiltersAction : clearing SELECTIONFILTER");
        UISelectOne one = (UISelectOne) theSelectionFilter;
        one.isRendered();
        if (one != null) {
            one.setValue(allEnum);
            log.info("ActiveBean: clearFiltersAction : resetting SELECTIONFILTER to ALL");
        }

        EnumerationFilter enumFilter =
                (EnumerationFilter)myFilterSelector.getFilter(FilterSelector.SELECTIONFILTER);

        enumFilter.setSelections(new String[]{allEnum});

        refreshIterator(true);  
        return null;//stay in the same page
    }