簡體   English   中英

JSF Lifecycle使用PrimeFaces ajax執行了2次

[英]JSF Lifecycle performed 2 times with PrimeFaces ajax

我在WebSphere Application Server上使用PrimeFaces 3.3.1和Apache MyFaces 2。 我的BackingBean是SessionScoped。 我有一個帶有selectOneButton的表單應該更新整個表單。

<h:form id="options">
    <p:panelGrid>
        <p:column rowspan="2" style="width:115px;">
            <p:selectOneButton value="#{graph.diagramdata}" id="diagramdata">           
                <f:selectItem itemLabel="WAS-Diagramm" itemValue="1" />
                <f:selectItem itemLabel="PSC-Diagramm" itemValue="2" />
                <p:ajax listener="#{graph.changeView }" update=":options"/>
            </p:selectOneButton>
            <h:outputText>#{graph.diagramdata}</h:outputText>
        </p:column>
        <p:column rendered="#{graph.diagramdata eq '1' }">
          ...
        </p:column>
    </p:panelGrid>
</h:form>

編輯:背部豆的一部分

@ManagedBean(name = "graph")
@SessionScoped
public class MyGraphBean implements Serializable {
  private int diagramdata;

  public void changeView(AjaxBehaviorEvent event) {
      LOGGER.info(this.getDiagramData());   
  }

  public int getDiagramdata() {
    return diagramdata;
  }

  public void setDiagramdata(int diagramdata) {
    if(diagramdata == 1 || diagramdata == 2) {
      this.diagramdata = diagramdata;
    }
  }
}

但是當我更改一個值時,jsf生命周期會執行2次。 第一次in.getValue是第二次它是1或2(來自LOGGER)。 但最后我的h:outputText打印0 ...

要調試我使用BalusC:Debug JSF Lifecycle

為什么te生命周期進行了2次?

如何使用我的selectOneButton正確呈現其他列?

編輯:骯臟的解決方案

我找到了解決問題的方法(很臟!!!)。 我將p:ajax組件更改為f:ajax。 所以現在我的值在第二個生命周期階段被設置為正確的值。

<p:selectOneButton value="#{graph.diagramdata}" id="diagramdata">           
      <f:selectItem itemLabel="WAS-Diagramm" itemValue="1" />
      <f:selectItem itemLabel="PSC-Diagramm" itemValue="2" />
      <f:ajax listener="#{graph.changeView }" render="options"/>
</p:selectOneButton>

我還在我的setter方法中添加了一個if語句,以避免設置“0”。

現在第一個jsf生命周期什么也沒做,第二個設置我的價值。

它有效,但不是很好......

什么是onchange="submit()"你有嗎? 是否有機會提交表格? 如果是,那么刪除它......

另外,你確定你需要immediate="true"你是否計划跳過驗證?

看起來像PrimeFaces selectOneButton的錯誤。 當我使用例如p:selectOneMenu時,它可以正常使用1個JSF生命周期!

這是primefaces的已知問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM