Jsf 防止在浏览器中缓存值
我有一个Jsf 防止在浏览器中缓存值,jsf,jsf-2,icefaces,Jsf,Jsf 2,Icefaces,我有一个selectOneMenu和一个dataTable。当我更改所选值时,dataTable将重新填充。 dataTable的其中一列是inputText。问题是,inputText字段不调用getter,而是缓存以前的值 我想强制调用getter,或者将inputText设置为不缓存。 我如何解决这个问题 <h:body> <f:view> <h:form id="headForm"> <ic
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>
订单号
数量
公共类OuterBean{
private List itemList=new ArrayList();
私有字符串selectedItem;
私有列表nestedClassList=newArrayList();
公共外滩(){
//初始值
}
公共作废项目列表ValueChanged(ValueChangeEvent e){
选择EdItem=(字符串)e.getNewValue();
//重置dataTable记录列表
nestedClassList=getRandomRecords();
}
//---吸气剂二传手-----//
私有类嵌套类{
私有整数订单号;
私人整数数量;
NestedClass(){
orderNumber=generateOrderNumber();
qty=getRandomQty();
}
//-----qtyChangedListener----//
//-----qtyValidator----------//
//-----吸气剂二传手-------//
}
}
我看不到您正在链接itemListValueChanged中nestedObject.qty的位置
除非对组件进行更改,否则不会重新加载该组件
Icefaces中的部分提交将仅更新其值已更改的组件
您可以在SelectOne菜单上设置Partial Submit false,也可以在itemListValueChanged中重新初始化inputText的值。有关更多说明,请显示代码片段我正在添加嵌套对象的列表。因此,每个
nestedObject
都有一个名为qty
的属性。所以这是一个新值。您是否可以监视请求接收更新的视图,这些视图将由Icefaces调用以更新监视器。您正在使用哪个版本的icefaces?
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-------//
}
}