How to specify name attribute in h:inputText?

前端 未结 2 966
说谎
说谎 2020-12-31 10:20

I need to render h:inputText as following html output :

  
  

        
2条回答
  •  情深已故
    2020-12-31 10:49

    You can't achieve it using . Its name is autogenerated by JSF based on the client ID (which is in turn based on component ID and all of its naming container parents).

    You've basically 2 options to achieve the concrete functional requirement anyway:

    1. If there are no other naming container parents, instruct the parent form to not prepend its ID:

      
      

      This will however cause to fail.

    2. Use plain HTML elements instead of JSF components:

      
      
      

      You only have to collect them yourself via @ManagedProperty on a request scoped bean:

      @ManagedProperty("#{param.name}")
      private String name;
      
      @ManagedProperty("#{param.email}")
      private String email;
      

      And you'll miss JSF builtin validation/conversion facility and ajax magic.

    There's however a completely different alternative: use HTML5 . This way the browser will autosuggest all previously entered emails on inputs of the very same type. This is not natively supported by . You can however use a custom render kit to get it to work, as answered in Adding custom attribute (HTML5) support to Primefaces (3.4):

    
    

    Update as of JSF 2.2 you can finally easily declare passthrough attributes without needing a custom render kit.

    <... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
    ...
    
    

提交回复
热议问题