Shi*_*han 1 validation lifecycle jsf
在这里,它被作者提及。
如果[COMPONENT]标记为有效,则两者都返回相同的值,即提交,转换和验证的值。
考虑一个非常简单的代码段:
<h:form>
<h:inputText value="#{bean.inputValue}"
binding="#{bean.htmlInputText}"
validator="nameValidator" /><br/>
<h:commandButton value="Submit" action="#{bean.action}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
与@RequestScoped
支持豆-
public Integer inputValue = 5;
public HtmlInputText htmlInputText;
public void action(){
System.out.println(" getSubmittedValue() "+htmlInputText.getSubmittedValue());
System.out.println(" isLocalValueSet() "+ htmlInputText.isLocalValueSet());
System.out.println(" getValue() " + htmlInputText.getValue());
System.out.println(" getLocalValue() " +htmlInputText.getLocalValue());
}
Run Code Online (Sandbox Code Playgroud)
按下提交按钮后,输出为-
getSubmittedValue() null AS EXPECTED, since Conversion & Validation succeded
isLocalValueSet() false
getValue() 25 AS EXPECTED, since Conversion & Validation succeded
getLocalValue() null Why NULL? IN WHAT CONTEXT HAS THE AUTHOR SAID SO
Run Code Online (Sandbox Code Playgroud)
您正在调用应用程序阶段检查本地值。
在更新模型值阶段会清除本地值。
作者在过程验证阶段进行讨论。
要澄清,这是完整的过程:
RESTORE_VIEW
getSubmittedValue()
(如果有)。isValid()
getLocalValue()
isLocalValueSet()
APPLY_REQUEST_VALUES
setValid(true)
和setSubmittedValue(request.getParameter(getClientId()))
。PROCESS_VALIDATIONS
getSubmittedValue()
。
setValue(convertedAndValidatedValue)
,setLocalValueSet(true)
,setSubmittedValue(null)
。请注意,该setValue()
行为实际上与一样setLocalValue()
。setValid(false)
并跳过更新模型值并调用应用程序阶段。UPDATE_MODEL_VALUES
bean.setProperty(getLocalValue())
和复位getSubmittedValue()
,isValid()
,getLocalValue()
和isLocalValueSet()
到它们的默认值null
,false
,null
和false
。INVOKE_APPLICATION
bean.method()
。RENDER_RESPONSE
getSubmittedValue()
不是null
,则渲染它,否则isLocalValueSet()
返回true
,渲染getLocalValue()
,否则渲染bean.getProperty()
。getSubmittedValue()
,isValid()
,getLocalValue()
以及isLocalValueSet()
在JSF视图状态,如果改变。 归档时间: |
|
查看次数: |
305 次 |
最近记录: |