2014-11-04 3 views
7

dataTableonchange 이벤트로 업데이트해야하는 특정 요구 사항이 있는데 selectOneMenu이지만 dataTable이 업데이트되지 않는 것으로 보입니다. 나는 행운과 함께 triggerChange() 기능을 사용하려고했습니다. 제가 시도한 아래 코드를 찾으십시오.triggerChange() 함수가 JSF에서 작동하지 않습니까?

위의 함수가 호출되지 않습니다

function updateTable() { 
    w_menu.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> 

자바 스크립트 및 데이터 테이블의 값이 생각에도 동일하게 유지, 나는 값을 변경 쓰러지 다.

답변

2

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의 기본값은 변경됩니다.

+0

감사합니다. Hatem !! :) –

+0

반갑습니다. –

관련 문제