2012-04-27 28 views
7

Tôi muốn thực hiện một số javas cript vào thành phần tổng hợp JSF của tôi, nhưng tôi có vấn đề với id. Tập lệnh java của tôi với:Composite components & ID

document.getElementById("myForm:customerId") 

không hoạt động, vì id sai. Tôi có JSF thành phần tổng hợp:

<composite:implementation> 
    <div id="element_customer"> 
     <h2 class="element_title">Customer</h2> 
     <h:form id="myForm"> 
      <h:inputText id="customerId" value="#{cc.attrs.customerId}"/> 
     </h:form> 
    </div> 
</composite:implementation> 

và HTML đầu ra là:

<div id="element_customer"> 
    <h2 class="element_title">Customer</h2> 
    <form id="j_idt44:myForm" name="j_idt44:myForm" method="post" ... > 
     <input type="hidden" name="j_idt44:myForm" value="j_idt44:myForm" /> 
     <input id="j_idt44:myForm:customerId" ... name="j_idt44:myForm:customerId" /> 
    </form> 
</div> 

Tại sao "j_idt44" được sử dụng trong sản lượng HTML?

Trả lời

13

Thành phần hỗn hợp là NamingContainer thành phần như <h:form>, <h:dataTable>, v.v. Điều này cho phép bạn có nhiều người trong số họ trong cùng một chế độ xem mà không có ID xung đột.

Bạn cũng cần cung cấp cho thành phần hỗn hợp ID cố định. Ví dụ.

<my:composite id="someId" /> 

Tôi cũng khuyên bạn nên sử dụng <div id="#{cc.id}"> thay vì <div id="element_customer">. Sau đó, nó sẽ trở thành someId với ví dụ trên.


Không liên quan cho vấn đề cụ thể, đây không phải là hoàn toàn đúng mục đích của một thành phần composite. Một thành phần hỗn hợp có ý định là cùng loại <h:inputText>, v.v. Bạn dường như muốn có một tệp thẻ hoặc có thể là tệp bao gồm. Xem thêm When to use <ui:include>, tag files, composite components and/or custom components?

+0

cảm ơn bạn. Về việc sử dụng CC, tôi đã đăng câu hỏi này về cách sử dụng phù hợp, nhưng tôi vẫn không chắc chắn: http://stackoverflow.com/questions/10056008/proper-using-of-facelet-templates-composite-components – Ziletka

+0

Có vẻ như tôi nên sử dụng thẻ Facelet thay vì các thành phần tổng hợp. – Ziletka

+1

Bạn được chào đón. Vâng tôi cũng nghĩ thế. – BalusC

Các vấn đề liên quan