防止浏览器中的缓存值



我有一个selectOneMenu和一个dataTable。当我改变选择的值,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-------//
     }
}

我不知道你在哪里改变了nestedObject。itemlistvaluechange中的数量

组件将不呈现,除非它被更改。

Icefaces中的

Partial Submit只会更新那些值已经改变的组件。

你可以在选择菜单上设置Partial Submit为false,或者你可以在itemlistvaluechange中重新初始化inputText的值。

相关内容

  • 没有找到相关文章

最新更新