Here,作者提到了它。
如果[COMPONENT]标记为有效,则两者都返回相同的值,即 提交,转换和验证的价值。
考虑一个非常简单的片段:
<h:form>
<h:inputText value="#{bean.inputValue}"
binding="#{bean.htmlInputText}"
validator="nameValidator" /><br/>
<h:commandButton value="Submit" action="#{bean.action}" />
</h:form>
使用@RequestScoped
支持bean -
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());
}
按下提交按钮,输出为 -
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
答案 0 :(得分:5)
您在调用应用程序阶段期间检查本地值。
在更新模型值阶段期间清除本地值。
作者正在讨论过程验证阶段。
澄清一下,这是完整的过程:
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()
重置为默认值{{1} },null
,false
和null
。false
INVOKE_APPLICATION
。bean.method()
RENDER_RESPONSE
不是getSubmittedValue()
,请进行渲染,否则null
返回isLocalValueSet()
,渲染true
,否则渲染getLocalValue()
。< / LI>
bean.getProperty()
,getSubmittedValue()
,isValid()
和getLocalValue()
,如果已更改。