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