当前位置:  开发笔记 > 编程语言 > 正文

JSF如何生成表单输入字段的名称?

如何解决《JSF如何生成表单输入字段的名称?》经验,为你挑选了2个好方法。

任何想法的人?我们是否可以指定表单输入字段的名称?怎么去那样做?



1> Romain Linso..:

更一般地说,所有JSF组件都有一个ID.如果您不提供,则JSF将使用格式j _idXXX(XXX是递增的数字)创建自动ID .

有些组件特别实现了javax.faces.component.NamingContainer接口.这意味着此组件的所有子项的ID都以此容器的ID为前缀,以":"分隔.因此,在示例中:


    

输入的真实 ID(即HTML输入对象的ID)将是myForm:myInput.



2> McDowell..:

如前所述,HTML名称和id属性由命名容器生成,并基于应用程序命名空间生成.当控件是重复控件(如a UIData)的子节点或JSP在一个页面中呈现两次时(如在portlet环境中),这可以防止冲突.呈现给HTML的id是clientId.

可以clientId手动硬编码或构建,但这是一种非常脆弱的方法.最好使用组件的getClientId(FacesContext)方法; 这是渲染器使用的.

可以获取clientId绑定组件的bean :

/** Request scope */
public class IdBean implements Serializable {
  private UIComponent mytext;

  public String getClientId() {
    return mytext.getClientId(FacesContext.getCurrentInstance());
  }

  public UIComponent getMytext() { return mytext; }
  public void setMytext(UIComponent mytext) { this.mytext = mytext; }

  public List getRows() {
    List rows = new ArrayList();
    for (int i = 0; i < 10; i++) {
      rows.add("row" + i);
    }
    return rows;
  }
}

风景:

  
    
      
        
          
          
        
      
    
  

  

mytext的控件呈现10倍,所以发射它的名称的任何代码也必须是DataTable的一个孩子.

推荐阅读
php
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有