2011-07-31 30 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必须创建方法的串行:)祝你好运!