1

完全に編集された: 多分私は問題を混ぜていて、誤解していた。コードを単純化した後、質問は次のように単純化さ<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このようなものを1回クリックするだけ で削除しても、<p:commandButton>ページが更新されるたびにカウンターが上がります。

<h:form>
        <h:outputText value="#{bugBean.number}" />
        <p:commandButton id="entryCommand" value="add"
            action="#{bugBean.increase()}" update="@form"/>
    </h:form>
4

2 に答える 2

5

見たところ、ヘッド定義が欠落しているため、構造にはAjaxサポートがありませんでした。この場合、 -tag<h:head/>のすぐ上に追加したところ、すべて正常に機能しました。<h:body>

すべての貢献者に感謝します!

于 2012-11-02T09:56:21.933 に答える
0

ページを更新するたびにアクションメソッドincrease()が呼び出されるのではなく、complete()メソッドと呼ばれるので、アクションメソッドが呼び出されたように思われるかもしれません。

内のoncomplete属性はクライアント側のp:commandButtonアクションを示しているため、サーバーのアクションではなくJSメソッドを示しています。ELはページの更新ごとに解析するときに実行されます。#{bugBean.complete()}

于 2012-10-31T21:53:48.747 に答える