這種奇怪的行爲只發生在Firefox(特別是Firefox 8)中。所以我有一個dataTable
,我可以做multiple selection
。一個提交按鈕,將顯示一個選定項目的列表dataList
和dialog
。如果用戶沒有選擇任何東西,那麼會有一個錯誤消息要求用戶選擇一些東西。如果用戶不選擇任何內容,對話框將不會出現。下面的代碼完成了這一切。但是火狐如果你做這些後續會出現很奇怪:即使在刷新頁面之後,Firefox仍保留JSF-Viewscoped-Managed-Bean內數組的內容
- 單擊以選中的
dataTable
- 一個項目,然後刷新(F5或CTL + R)的頁面(你可以看到選擇了清客)
- 然後點擊提交,它顯示我剛剛選擇的任何東西。
這是出乎意料的,因爲刷新應該清除您剛選擇的任何因爲@ViewScoped
bean的性質。這種行爲只發生在Firefox中。 IE 8對我來說行爲正確。這是一個錯誤,還是我在這裏做錯了什麼?
鑽嘴魚科2.1 + PrimeFaces3.0決賽+ Tomcat的7
更新:我做了一些調試,當我刷新,數組selectedFoods
成爲null
的價值,但對於一些奇怪的原因,當頁它得到public void checkSelection()
,它保存了先前選擇的值。很奇怪。
這是我的代碼。
<p:growl id="messages" showDetail="true" />
<p:messages id="msgs"/>
<h:form id="form">
<p:dataTable value="#{viewBean.foodList}" var="item"
selection="#{viewBean.selectedFoods}"
selectionMode="multiple"
rowKey="#{item}">
<p:column>
#{item}
</p:column>
<f:facet name="footer">
<p:commandButton value="Submit" update=":form:display :dataList"
action="#{viewBean.checkSelection}"/>
</f:facet>
</p:dataTable>
<p:dataList id="display" value="#{viewBean.selectedFoods}" var="item"
itemType="disc">
#{item}
</p:dataList>
</h:form>
<p:dialog id="dialog1" widgetVar="dialog1" dynamic="true" width="200">
<p:dataList id="dataList" value="#{viewBean.selectedFoods}" var="item"
itemType="disc">
#{item}
</p:dataList>
</p:dialog>
這裏是我的託管bean
@ManagedBean
@ViewScoped
public class ViewBean implements Serializable {
private List<String> foodList;
private String[] selectedFoods;
@PostConstruct
public void init() {
foodList = new ArrayList<String>();
foodList.add("Pizza");
foodList.add("Pasta");
foodList.add("Hamburger");
}
public void checkSelection(){
RequestContext requestContext = RequestContext.getCurrentInstance();
if(selectedFoods.length > 0){
requestContext.execute("dialog1.show()");
}else{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Error", "Please select"));
requestContext.addPartialUpdateTarget("messages");
}
}
//setter, getter
}
:P如果你的代碼可以在某些瀏覽器上正常運行,我會說你沒有做錯任何事。如果你的服務器端代碼出錯了,它會出現在所有瀏覽器上^^ – 2012-01-06 20:58:05
@ Mr.J4mes:D我想知道你是否產生了和我一樣的結果? – 2012-01-06 21:13:40
我還沒有試過,但我會遲一點:P – 2012-01-06 21:21:42