2012-04-27 5 views
7

Я хочу реализовать некоторый javas-cript в свой составной компонент JSF, но у меня проблема с id. Мой сценарий java с:Композитные компоненты & ID

document.getElementById("myForm:customerId") 

не работает, потому что идентификатор неправильный. У меня есть JSF составной компонент:

<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> 

и HTML выход есть:

<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> 

Почему "j_idt44" при выводе используется HTML?

ответ

13

Составные компоненты: NamingContainer Компоненты, такие как <h:form>, <h:dataTable> и т. Д. Это позволяет иметь несколько из них в одном и том же виде без противоречивых идентификаторов.

Необходимо также указать составной компонент как фиксированный идентификатор. Например.

<my:composite id="someId" /> 

Я также предлагаю использовать <div id="#{cc.id}"> вместо <div id="element_customer">. Затем это будет someId с приведенным выше примером.


Unrelated к конкретной проблеме, это не совсем правильное назначение составного компонента. Компонентный компонент имеет один и тот же вид <h:inputText> и т. Д. Вам, скорее всего, нужен файл тега или, возможно, файл include. См. Также When to use <ui:include>, tag files, composite components and/or custom components?

+0

спасибо. Об использовании CC я разместил этот вопрос о правильном использовании, но я все еще не уверен: http://stackoverflow.com/questions/10056008/proper-using-of-facelet-templates-composite-components – Ziletka

+0

Похоже, что я должен использовать тег Facelet вместо составных компонентов. – Ziletka

+1

Добро пожаловать. Да, я так думаю. – BalusC