我们都知道,JSF2中页面上的每一个组件的实现包括一个UIComponent类,一个Tag标签类,和一个Render向页面解析的类。而页面上的每一个组件的binding属性就是将页面的标签绑定到一个UIComponent实例,如果得到了这个实例,我们就可以对这个实例做各种各样的操作,比如修改value等等,等response完成后,修改的值就会反映在页面上。例如,我们在ManagedBean中有俩个属性userBean:
private String username;
private HtmlInputText inputName;
页面上有一个输入用户名的input框:
<h:inputText value="#{userBean.username}" required="true" binding="#{userBean.inputName}">
</h:inputText>
这样页面上的这个input框的值就会组装到userBean的username属性上,而将这个input组件绑定到userBean的inputName是个实例上。当然,页面上有什么样的组件,userBean中就应该定义对应的UIComponent类的子类。当页面提交的时候,我们就可以在action方法中任意的使用这个组件实例了。例如,我们将用户输入的用户名变成大写,就只要在action方法中添加:
public String login() {
inputName.setValue(getUsername().toUpperCase());
return null;
}
我们将用户填的值全部变成大写后赋值给这个组件实例,这样,在页面上显示就为大写了。