Ans*_*hew 7 javascript jsf primefaces jsf-2
我有一个特定的要求,我必须更新a 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>
Run Code Online (Sandbox Code Playgroud)
JavaScript的
function updateTable() {
w_menu.triggerChange();
}
Run Code Online (Sandbox Code Playgroud)
上面的函数没有被调用,并且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>
Run Code Online (Sandbox Code Playgroud)
您应该检查控制台输出,我添加了这些输出oncomplete只是为了确保您没有任何阻止更新过程的验证错误。
如果您有任何验证错误,您应该在这一点上努力以实现您的目标。
注意:默认值event是change。
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |