【发布时间】:2012-10-31 11:59:19
【问题描述】:
完全编辑:
也许我混合了问题并误解了。简化我的代码后,问题简化为:如何防止<p:commandButton> 在页面刷新时执行它的操作方法(例如在浏览器窗口中按 F5 时)?
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 是的,我就是这个意思!
-
在此处发布您页面的其余部分,以提供一些背景信息。
-
我不明白你的问题。刷新页面时不会执行命令按钮,而是在按下按钮时执行。你能澄清一下吗?
-
这就是问题所在。该方法在刷新时调用。一次又一次。
标签: ajax jsf-2 primefaces