2011-04-06 57 views
1

我有以下驗證:F:validateLongRange的Bean實例,它應該不會

<h:inputText id="orderC" value="#{columnEdit.selectedColumn.position}" maxlength="2" validatorMessage="#{columnEdit.valOrder}"> 
      <f:validateLongRange maximum="#{columnEdit.maxOrder}" minimum="#{columnEdit.minOrder}" /> 
</h:inputText> 

的驗證屬於其支持bean是ViewScoped一個JSF頁。

相關的代碼片段:

public Integer getMaxOrder() 
    { 
     maxOrder = selectedFileFormat.getColumnList().size(); 

     return maxOrder; 
    } 

_

public Integer getMinOrder() 
    { 
     if (getIsCode()) 
      { 
      minOrder = 1; 
      } 
      else 
      { 
      minOrder = 2; 
      } 

      return minOrder; 
    } 

_

public String getValOrder() 
    { 
     valOrder = "Range of " + minOrder + " to " + maxOrder; 

     return valOrder; 
    } 

_
有一個取消我的網頁上按鈕:

<p:commandButton value="#{i18n['xxx.cancel']}" action="#{columnEdit.cancel}" ajax="false"> 
        <p:confirmDialog message="#{i18n['xxx.cancelConf']}" severity="warn" /> 
        <f:param name="formatId" value="#{columnEdit.selectedFileFormat.id}"/> 
        <f:param name="navigationCase" value="edit"/> 
</p:commandButton> 

_
誰的動作:

public String cancel() 
    { 
     Integer theFormatId = selectedFileFormat.getId(); 

     return "fileFormatEdit.xhtml" 
    } 

_
我的問題:爲什麼我的bean的postConstruct按下取消按鈕後,被稱爲?我發現原因是f:validateLongRange,但爲什麼它實例化一個新的列編輯 bean?

+0

[爲什麼f:validateDoubleRange只適用於@SessionScoped?](http://stackoverflow.com/questions/7445417/why-does-fvalidatedoublerange-only-work-for-sessionscoped) – BalusC 2011-11-08 03:46:05

回答

0

我認爲這是因爲你是專門定義下一個視圖來瀏覽返回「fileFormatEdit.xhtml」?

如果您的意思是返回到同一頁面,請嘗試更改爲返回null(意味着不導航,並使用當前活動視圖)。

或者簡單地將操作方法​​定義更改爲public void cancel(),您不必返回任何內容。

+0

嗨:)這個老話題給了我一個似曾相識的感覺。我以前回答過一個非常類似的問題。檢查我發佈的問題和[本文](http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#ViewScopedFailsInTagHandlers)可能的dupe鏈接,以獲取正確的解釋問題。 – BalusC 2011-11-08 03:46:53

+0

@BalusC:你好=)可能的重複頁面很棒,以前從未有過。該死,我沒有注意到提到的「f:validateLongRange」的原始海報是根本原因。我只是從我的經驗中得到了這樣的結果,儘管它是一個視圖範圍,但使用顯式返回語句返回到當前視圖將重新創建視圖範圍bean。希望您的解決方案適用於原始海報。感謝分享BalusC! – bertie 2011-11-08 12:27:26