我有一个特定的要求,我必须通过dataTable
的onchange
事件来更新selectOneMenu
,但似乎dataTable没有得到更新。我试图使用triggerChange()
函数,但没有运气。请找到以下我尝试过的代码。
xhtml
<p:selectOneMenu id="id" style="width:250px"
value="#{priceCharterMBean.traffic.id}"
required="true"
requiredMessage="Traffic is required"
filter="true"
filterMatchMode="startsWith"
widgetVar="w_menu"
onchange="updateTable();">
<p:ajax event="change" process="@this"
listener="#{priceCharterMBean.loadTEI}"
update="aTEModelList"
immediate="true"
partialSubmit="true" />
<f:selectItem itemLabel="Select" itemValue=""
noSelectionOption="true" />
<f:selectItems value="#{priceCharterMBean.trafficModelList}"
var="traffic" itemLabel="#{traffic.loadTrafficList}"
itemValue="#{traffic.id}" />
</p:selectOneMenu>
<p:dataTable style="width:350px" id="aTEModelList" var="aTEModelList" value="#{priceCharterMBean.aTEModelList}" rowKey="#{aTEModelList.id}">
<p:column style="display: none">
<f:facet name="header">
<h:outputText value="Expense Id" />
</f:facet>
<h:outputText id="expId" value="#{aTEModelList.id}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Expense Short Description" title="#{text.expenseshortdescription}" />
</f:facet>
<h:outputText id="expenseShortDesc" value="#{aTEModelList.expenseShortDescription}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Actual Expense Value" title="#{text.actualexpensevalue}" />
</f:facet>
<h:inputText id="actualTrafficExpense" maxlength="8" value="#{aTEModelList.actualTrafficExpense}" />
</p:column>
</p:dataTable>
javascript
function updateTable() {
w_menu.triggerChange();
}
上面的函数没有被调用,即使我更改了下拉列表中的值,dataTable中的值仍保持不变。
最佳答案
一起拥有process
,immediate
和partialSubmit
是没有意义的。
现在,ajax的主要目的是调用triggerChange()
,因此无需通过onchange
事件手动触发它。
尝试通过以下步骤简化该过程:
<p:selectOneMenu value="#{priceCharterMBean.traffic.id}">
<p:ajax process="@this" update="aTEModelList"
oncomplete="console.log('validation: ' + args.validationFailed)" />
</p:selectOneMenu>
您应该检查控制台输出,我包括了
oncomplete
只是为了确保您没有任何会阻止更新过程的验证错误。如果您有任何验证错误,则应该在该点上努力以达到目标。
注意:
event
的默认值是change。关于javascript - triggerChange()函数在JSF中不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26730677/