我在xhtml里面使用jsf2.0的标签:<h:inputText id="username" />等等之类的,页面到达客户端浏览器之后,去查看页面源码,这个input上面的ID总是会出现:j_id_7:username这样的ID请问各位大虾有木有办法让它不要自动生成前面那一截,直接就生成username这样的ID啊。。?。。?

解决方案 »

  1.   

    <h:form id="form1" prependId="false">有了prependId="false",所有id就是你在页面自己设置的id了.
      

  2.   


    恩确实是的,在form标签上加上prependId="false" form里面的表单元素确实没有了form的ID前缀
    大虾,我还想请教一个问题,我在开发自定义复合组件的时候,组件里面写的composite:implementation中的h:form 我从外面传了一个ID进来,可是,jsf给我生成的表单前缀,就加上了一个生成的前缀那这个时候,我应该怎么处理呢?
      

  3.   

    大虾在么?
    我的自定义组件代码:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:composite="http://java.sun.com/jsf/composite">
        
      <!-- INTERFACE -->
      <composite:interface>
        <composite:attribute name="image"/>
        <composite:attribute name="formId"/>
        <composite:attribute name="actionMethod" 
                 method-signature="java.lang.String action()"/>        
      </composite:interface>  <!-- IMPLEMENTATION -->          
        <composite:implementation>
        <h:form id="#{cc.attrs.formId}">  
          <h:commandLink action="#{cc.attrs.actionMethod}" immediate="true">      <h:graphicImage value="#{cc.attrs.image}"
                    styleClass="icon"/>      </h:commandLink>
        </h:form>
      </composite:implementation>
    </html>使用组件的页面代码:
    <html xmlns="http://www.w3.org/1999/xhtml"
        xmlns:util="http://java.sun.com/jsf/composite/components/util">  <util:icon actionMethod="#{places.logout}" 
                 formId="myform" 
                          image="#{resource['images:back-arrow.jpg']}"/>
      ...
    </html>可是最后到达客户端的页面中form的ID不是myform了,而是j_id_7:myform
    name也是一样的  
    我想把myform前面那一截东西去掉,就是不着调该如何去吖哎!
    求大虾指教指教噢
    非常感谢!!!~~~