猿问

如何在JSF中使用“Binding”属性?何时和如何使用它?

如何在JSF中使用“Binding”属性?何时和如何使用它?

有很多不同的材料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豆子?

下面是人工美化和注释后生成的输出的相关部分(注意id)。j_id_jsp_1847466274_1是自动生成的,并且有两个隐藏的输入小部件)。我正在使用Sun的JSFRI,版本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存放在这里?


慕尼黑8549860
浏览 653回答 2
2回答

呼唤远方

每个JSF组件都将自己呈现为HTML,并完全控制它生成的HTML。JSF可以使用许多技巧,而这些技巧中的哪些将取决于您正在使用的JSF实现。确保每个FROM输入都有一个完全唯一的名称,这样当表单被提交回呈现它的组件树时,很容易知道每个组件可以在哪里读取其值表单。JSF组件可以生成提交给Serer的javascript,生成的javascript也知道每个组件的绑定位置,因为它是由组件生成的。对于hlink之类的内容,您可以将绑定信息作为查询参数或url本身的一部分或matrx参数包含在url中。举个例子。http:..../somelink?componentId=123将允许jsf在组件树中查看链接123已被单击。或者它可以htp:..../jsf;LinkId=123回答这个问题的最简单方法是创建一个只有一个链接的JSF页面,然后检查它生成的html输出。这样,您就可以确切地知道使用您正在使用的JSF版本是如何发生这种情况的。
随时随地看视频慕课网APP
我要回答