JSF中的binding属性

引言

  平时使用JSF,在查看标签proposal的时候经常到瞟到这个属性,几乎所有组件标签都有这个属性,但是一直不知道有什么用,今晚无意中研究了一下,发现还挺好用。

binding属性

先看下binding的proposal:
The ValueExpression linking this component to a property in a backing bean
大意为这是一个求值表达式,它将当前的组件和某个backing bean的属性连接绑定在一起。
JSF中所有的UI组件都是对象,都有对应的类,那么JSF组件对象作为bean的成员属性也是可以的,所以试验一下:
package net.zealot.bean;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.UIInput;

@ManagedBean
@SessionScoped
public class UserBean {
    private String username;
    private UIInput inputComponent;//<h:inputText />

    public void test() {
        String value = (String) this.inputComponent.getValue();//这里有非常多的操作input组件的方法
        System.out.println(value);
    }

    public UIInput getInputComponent() {
        return inputComponent;
    }
    public void setInputComponent(UIInput inputComponent) {
        this.inputComponent = inputComponent;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
}

index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">
<h:head></h:head>
<h:body>
    <h:form>
        <h:outputLabel b for="username">username:</h:outputLabel>
        <h:inputText binding="#{userBean.inputComponent}"></h:inputText><br/><!-- 故意不写value -->
        <h:commandButton value="click" action="#{userBean.test}"></h:commandButton>
    </h:form>
</h:body>
</html>

这里写图片描述

点击按钮,页面自然是没有什么变化,但是控制台确实输出了inputText中的内容:
aaaaa

就是说,binding将组件的实例绑定到后端一个bean的成员属性上,这样一来,完全可以动态地在后端控制前端的所有组件的属性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值