2011-07-31 3 views
0

항목 유형에 따라 변경되는 동적 입력 필드가 생성되었습니다.동적 입력 값이 백킹 빈에서 업데이트되지 않았습니다.

<h:panelGrid columns="2" cellpadding="10"> 
    <c:forEach items="#{tabVar.items}" var="itmVar"> 
     <h:outputText value="#{itmVar.label}:" /> 
     <c:if test="#{itmVar.isString}"> 
      <p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100" size="75" immediate="true" onchange="form1.submit()"/> 
     </c:if> 
     <c:if test="#{itmVar.isDate}"> 
      <p:calendar id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" onSelectUpdate="form1.submit();"/> 
     </c:if> 
     <c:if test="#{itmVar.isDouble}"> 
      <p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100"> 
       <f:validateDoubleRange minimum="#{itmVar.minDouble}" maximum="#{itmVar.maxDouble}" /> 
      </p:inputText>             
     </c:if> 
     <c:if test="#{itmVar.isInteger}"> 
      <p:inputText id="#{itmVar.id}" value="#{itmVar.value}" required="#{itmVar.isEditable}" disabled="#{not itmVar.isEditable}" valueChangeListener="#{tabBean.processValueChange}" maxlength="100"> 
       <f:validateLongRange minimum="#{itmVar.minLong}" maximum="#{itmVar.maxLong}" /> 
      </p:inputText> 
     </c:if> 
    </c:forEach> 
</h:panelGrid> 

모든 것이 올바르게 렌더링되지만, 입력 값을 변경하여 제출하면 백업 빈에서 업데이트되지 않습니다. 어떻게 이런 일이 생기고 어떻게 해결할 수 있습니까?

+0

내가 너라면, 추측을 수행하기를 기대하는 대신 뒷주백 코드를 게시 할 것입니다. 또한 어떤 값이 업데이트되지 않는지에 대해 좀 더 자세히 설명했을 것입니다. 일반적인 용의자는 뷰 루트에있는 UIInput 구성 요소의 ID입니다. –

답변

-1

이 맞지 않을 수 있습니다. 모든 값에 대해 valueChangeListener에 대해 하나의 메소드 만 사용할 수는 없습니다. ManagedBean에 전체 코드를 게시 할 수 있습니까? @SessionScope에 그게 있니? valueChangeListener위한 올바른 방법은 다음과 같이 할 수있다 :

public void saveStatus(ValueChangeEvent event) { 
     Integer newValue = (Integer) event.getNewValue();//this is for save Status 
     itmVar.setStatus(newValue); 
    } 

당신이 가치의 시리얼을 저장하려면, u는 방법의 시리얼 :) 행운을 만들어야합니다!