2011-04-06 56 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