В 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
. Геттер запускается, чтобы вернуть значение свойства name
для User
bean. Значение выводится на вывод HTML.
Но я не мог понять, как работает binding
. Как сгенерированный HTML поддерживает привязку к свойству link
User
bean?
Ниже приведена соответствующая часть сгенерированного вывода после ручной сортировки и комментариев (обратите внимание, что идентификатор 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
?