Come arrivare elemento da JavaScript in JSF 2.0
-
22-09-2019 - |
Domanda
Ho codice JSF come:
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
Mi piacerebbe ottenere questo elemento da JavaScript per ID (from
), ma non ci riesco, perché in HTML generato è j_idt8:from
Come posso ottenere questo elemento nel esempio jQuery? C'è un modo per forzare JSF2 non cambiare ids?
Soluzione
È possibile utilizzare una classe personalizzata, che si assegna solo a questo elemento e utilizzare selettori CSS o assegnare un ID al modulo e ottenere l'elemento con il formid:from
id.
Altri suggerimenti
C'è un modo per forzare JSF2 non cambiare ids?
È possibile impostare prependId="false"
In questo modo in HTML generato sarà dal al posto di j_idt8:. Da
prependId: flag che indica se o meno questa forma dovrebbe anteporre la sua id per id del suo discendente durante la generazione clientId processi. Se questo flag non è impostato, il valore predefinito è vero.
Come posso ottenere questo elemento nel esempio jQuery?
È possibile utilizzare ancestorComponent:from
in jQuery per ottenere questo elemento.
In realtà j_idt8 in j_idt8: da è generato Auto ID di componente antenato del tuo <h:inputText/>
per esempio
<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>
Ora generato id di testo di input sarebbe forma: da
Se non si forniscono id a un componente di browser genera quel modo dinamico. Quindi non dimenticate di fornire ID per i componenti.
In JSF 1.2 è possibile utilizzare forceId = "true". Non sono sicuro se è possibile utilizzare t: ingresso in JSF 2, ma si dovrebbe essere in grado di. Allora è ID in HTML sarà quello che vi aspettate.
Per conseguire piena ID di un componente, usare EL oggetti impliciti e le loro proprietà come #{cc.clientId}
e #{component.clientId}
. Fonte: acquisire piena prefisso per un clientId componente all'interno denominazione contenitori con JSF 2.0 .
È possibile utilizzare jQuery. Semplicemente, utilizzare un selettore che definisce il testo dovrebbe contiene. Qualcosa di simile a questo:
$( "input[name*='from']" )
'* =' è usato per dire che l'attributo nome contiene qualche stringa. Inoltre esistono '~ =' con significato simile.
Per spiegazioni dettagliate ed esempi visita http://api.jquery.com/attribute-contains -selector /