在 JSF 中,关于 value
属性和 binding
属性的区分已经有了大量的资料。
我感兴趣的是这两种方法之间的区别:
public class User {
private String name;
private UICommand link;
// Getters and setters omitted.
}
<h:form>
<h:commandLink binding="#{user.link}" value="#{user.name}" />
</h:form>
当指定 value
属性时会发生的情况非常简单。Getter 运行返回 User
bean 的 name
属性值。该值被打印到 HTML 输出中。
但我不明白 binding
是如何工作的。生成的 HTML 如何维护与 User
bean 的 link
属性的绑定?
下面是经过手动美化和注释后生成的输出的相关部分(注意 id j_id_jsp_1847466274_1
是自动生成的,并且有两个隐藏的输入小部件)。
我使用的是 Sun 的 JSF RI 版本1.2。
<form action="/TestJSF/main.jsf" enctype="application/x-www-form-urlencoded"
id="j_id_jsp_1847466274_1" method="post" name="j_id_jsp_1847466274_1">
<input name="j_id_jsp_1847466274_1" type="hidden" value="j_id_jsp_1847466274_1">
<a href="#" onclick="...">Name</a>
<input autocomplete="off" id="javax.faces.ViewState" name="javax.faces.ViewState"
type="hidden" value="-908991273579182886:-7278326187282654551">
</form>
binding
存放在哪里?