我有以下驗證: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?
[爲什麼f:validateDoubleRange只適用於@SessionScoped?](http://stackoverflow.com/questions/7445417/why-does-fvalidatedoublerange-only-work-for-sessionscoped) – BalusC 2011-11-08 03:46:05