JSF2中自动生成ID

在JSF2中,页面上的每一个组件都有一个id属性,JSF2会利用这个id的值来生成一个clientId,如果页面没有为id提供值,JSF2 就会自动生成一个clientId,默认的格式: 根组件的id:组件的id。例如:

<f:view>
    <h:form title="regedit" id="myForm">
    <h:inputText value="#{userBean.birthday}" id="birthday"/>
    </h:form>
</f:view>

 其中form的id为"myForm",而input的id为"myForm:birthday",当然这其中的分隔符是可以修改的,方法就是在web.xml中添加一个参数:javax.faces.SEPARATOR_CHAR

  <context-param>
        <param-name>javax.faces.SEPARATOR_CHAR</param-name>
        <param-value>-</param-value>
  </context-param>

 这样input生成的id就为"myForm-birthday"。有时候在应用ajax框架的时候,那些框架会不能识别id标识中有“:”符号,就找不到相应的节点,当然可以有其他解决方法,但这也是一种方式。比如在对上面的input应用jquery的datepicker功能的时候,juqery是不允许id中出现“:”的,不然就找不到对象了:

<script>
      $(function() {
             $( "#myForm-birthday" ).datepicker();
      });
</script>

 

这样就可以应用了.

JSF2生成的这个clientId是唯一的,当然在JSF2应用的任何地方,也是有办法根据clientId来得到对应的组件的,比如:

FacesContext.getCurrentInstance().getViewRoot().findComponent("myForm-birthday").getAttributes().get("value")

 这样就可以根据clientId找到对应的组件,并进行更多的操作,比如得到组件的所有属性值等等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值