完全編輯: 也許我在混合問題和曲解。簡化我的代碼後,問題簡化爲:如何防止<p:commandButton>
在頁面刷新時執行它的操作方法(如在瀏覽器窗口中點擊F5時)?Primefaces命令按鈕調用刷新頁面上的操作方法
JSF代碼:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:body>
<h:form>
<h:outputText value="#{bugBean.number}" />
<h:outputText value="#{bugBean.isComplete()}" />
<p:commandButton id="entryCommand" value="add"
action="#{bugBean.increase()}" update="@form" oncomplete="#{bugBean.complete()}"/>
</h:form>
</h:body>
</html>
支持bean代碼:
package huhu.main.managebean;
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class BugBean implements Serializable {
private static final long serialVersionUID = 1L;
private int number;
private boolean isComplete = false;
public void increase(){
number++;
}
public void complete(){
isComplete = true;
}
public int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
public boolean isComplete() {
return isComplete;
}
public void setComplete(boolean isComplete) {
this.isComplete = isComplete;
}
}
更新: 即使我刪除oncomplete
東西,像這樣的點擊<p:commandButton>
只有一次,計數器上升在每個頁面上刷新。
<h:form>
<h:outputText value="#{bugBean.number}" />
<p:commandButton id="entryCommand" value="add"
action="#{bugBean.increase()}" update="@form"/>
</h:form>
使用「頁面刷新」,你的意思是在網頁瀏覽器中按F5/Ctrl + R? – BalusC
@BalusC是的,這就是我的意思! – Lester
在此發佈您的網頁的其餘部分,以提供一些背景。 – kolossus