Как работает атрибут связывания в JSF? Когда и как его следует использовать?

Есть много материалов, дифференцирующихvalue атрибут иbinding атрибут в JSF.

Мне интересно, как оба подхода отличаются друг от друга. Дано:

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 боб. Значение выводится в вывод HTML.

Но я не мог понять, какbinding работает. Как сгенерированный HTML поддерживает связь сlink собственностьUser фасоль?

Ниже приведена соответствующая часть сгенерированного вывода после ручного украшения и комментирования (обратите внимание, что идентификатор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 хранится здесь?

Ответы на вопрос(2)

Ваш ответ на вопрос