2013-03-03 156 views
0

防止缓存值,我有一个selectOneMenudataTable。当我改变选定的值时,dataTable将重新填充。 的dataTable的柱的一个是inputText。问题是inputText字段不会调用getter,而是缓存以前的值。在浏览器

我想用武力或者拨打getter或设置inputText不被缓存。 我该如何摆脱这个问题?

<h:body> 
    <f:view> 
     <h:form id="headForm"> 

      <ice:selectOneMenu id="item" 
        value="#{outerBean.selectedItem}" 
        valueChangeListener="#{outerBean.itemListValueChanged}" 
        style="width: 158px;" required="true" 
        label="Supplier Id" partialSubmit="true"> 
        <f:selectItems value="#{outerBean.itemList}" /> 
      </ice:selectOneMenu> 

      <ice:dataTable id="pdet" value="#{outerBean.nestedClassList}" var="nestedObject" rendered="true"> 

       <ice:column> 
       <f:facet name="header">Order Number</f:facet> 
        <ice:outputText value="#{nestedObject.orderNumber}" /> 
       </ice:column> 

       <ice:column> 
       <f:facet name="header">Qty</f:facet> 
        <ice:inputText value="#{nestedObject.qty}" id="qty" label="'Qty' FOR 'Order Number':#{nestedObject.orderNumber} " 
            partialSubmit="true" 
            valueChangeListener="#{nestedObject.qtyChanged}" 
            validator="#{nestedObject.validateQty}"> 
        </ice:inputText> 
       </ice:column> 
      </ice:dataTable> 
     </h:form> 
    </h:view> 

public class OuterBean{ 

    private List<String> itemList = new ArrayList<String>(); 
    private String selectedItem; 

    private List<NestedClass> nestedClassList = new ArrayList<NestedClass>(); 

    public OuterBean(){ 
     //init values 
    } 

    public void itemListValueChanged(ValueChangeEvent e){ 
     selectedItem = (String)e.getNewValue(); 

     //reset the dataTable record list 
     nestedClassList = getRandomRecords(); 
    } 

    //---getters-setters-----// 

    private class NestedClass{ 

     private int orderNumber; 
     private int qty; 

     NestedClass(){ 
      orderNumber = generateOrderNumber(); 
      qty = getRandomQty(); 
     } 

     //-----qtyChangedListener----// 
     //-----qtyValidator----------// 
     //-----getters-setters-------// 
    } 
} 
+0

更多的澄清表明我们的代码片段 – 2013-03-03 15:43:00

+0

添加代码片段 – sura2k 2013-03-03 16:13:30

回答

0

我没有看到你在itemListValueChanged

chainging nestedObject.qty的组件将不会重新解析,除非它被改变。在ICEfaces的

部分Submit将只更新其值已经改变的组件。

您可以部分提交关于selectOneMenu用于虚假或者你可以重新初始化的inputText在itemListValueChanged的价值。

+0

我添加的'nestedObject's名单。所以每个'nestedObject'都有一个名为'qty'的属性。所以这是一个新的价值。 – sura2k 2013-03-06 14:31:32

+0

您可以监视Icefaces将调用的更新监视器的请求receive-updated-views。你正在使用哪种版本的icefaces? – 2013-03-06 15:27:57