Como o atributo 'binding' funciona no JSF? Quando e como deve ser usado?

Há muitos materiais por aí diferenciandovalue atributo ebinding atributo no JSF.

Estou interessado em como as duas abordagens diferem umas das outras. Dado:

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>

É bem direto o que acontece quando umvalue atributo é especificado. O getter corre para devolver oname valor da propriedade doUser feijão. O valor é impresso na saída HTML.

Mas eu não conseguia entender comobinding trabalho. Como o HTML gerado mantém uma ligação com olink propriedade doUser feijão?

Abaixo está a parte relevante da saída gerada após o embelezamento manual e comentários (note que o idj_id_jsp_1847466274_1 foi gerado automaticamente e que existem dois widgets de entrada ocultos). Estou usando o JSF RI da Sun, versão 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>

Onde estábinding armazenado aqui?

questionAnswers(2)

yourAnswerToTheQuestion