2011-07-31 67 views
0

我已經創建了一個動態輸入字段,該字段根據項目類型而變化。支持bean中未更新的動態輸入值

<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> 

一切正確呈現,但是當我改變並提交輸入值,那麼它不會在輔助Bean更新。這是如何造成的,我該如何解決這個問題?

+0

如果我是你,我會發布支持bean的代碼,而不是期望人們進行猜測。另外,我會更具體地說明什麼值沒有被更新。通常的嫌疑人將是你的視圖中的UIInput組件的ID。 –

回答

-1

#{tabBean.processValueChange}可能不對。對於所有值,它只能使用1個valueChangeListener方法。你可以在ManagedBean中發佈完整的代碼嗎?是在@SessionScope上嗎?爲valueChangeListener正確的方法可能是這樣的:

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

如果你想保存的價值序列,u必須創建方法的串行:)祝你好運!