Pergunta

Eu tenho código JSF como:

<h:inputText id="from" value="#{fromToMBean.fromName}"/>

Eu gostaria de obter este elemento do JavaScript por id (from), mas não posso, porque em HTML gerado é j_idt8:from

Como posso obter esse elemento no por exemplo, jQuery? Existe alguma maneira de forçar o JSF2 a não alterar os IDs?

Foi útil?

Solução

Você pode usar uma classe personalizada que você atribui apenas a este elemento e usar seletores CSS ou atribuir um ID ao formulário e obter o elemento com o ID formid:from.

Outras dicas

Existe alguma maneira de forçar o JSF2 a não alterar os IDs?

Você pode definir prependId="false" Dessa forma em HTML gerado, será a partir de no lugar de j_idt8: de.

ApresendID: Sinalizador indicando se este formulário deve ou não prender seu ID ao ID do descendente durante o processo de geração do cliente. Se esse sinalizador não estiver definido, o valor padrão será verdadeiro.

Como posso obter esse elemento no por exemplo, jQuery?

Você pode usar ancestorComponent:from no jQuery para obter esse elemento.

Na realidade j_idt8 dentro j_idt8: de é um id de componente ancestral gerado automaticamente <h:inputText/>

por exemplo

<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>

Agora o ID gerado do texto de entrada seria forma: de

Se você não fornecer ID para um componente, o seu navegador gera isso dinamicamente. Portanto, não se esqueça de fornecer IDs aos componentes.

No JSF 1.2, você pode usar forceId = "true". Não tenho certeza se você pode usar t: entrada no JSF 2, mas deve poder. Então é o ID no HTML será o que você espera.

Para obter uma identificação completa para um componente, use objetos implícitos e suas propriedades, como #{cc.clientId} e #{component.clientId}. Fonte: Adquirir prefixo completo para um componente clientId dentro de contêineres de nomenclatura com JSF 2.0.

Você pode usar jQuery. Simplesmente, use um seletor que defina o texto que ele deve contém. Algo assim:

$( "input[name*='from']" )

'*=' é usado para dizer que o atributo de nome contém alguma string. Também existem '~=' com significado semelhante.

Para explicações e exemplos detalhados, visite http://api.jquery.com/attribute-contains-selector/

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top