Wie kommt man Element von Javascript in JSF 2.0
-
22-09-2019 - |
Frage
Ich habe JSF Code wie:
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
Ich möchte dieses Element von JavaScript nach ID (from
) bekommen, aber ich kann nicht, weil in generierten HTML es j_idt8:from
ist
Wie kann ich dieses Element in z.B. jQuery? Gibt es eine Möglichkeit JSF2 nicht zu ändern ids zu zwingen?
Lösung
Sie können entweder eine benutzerdefinierte Klasse verwenden, die Sie nur auf dieses Element und die Verwendung CSS-Selektoren zuweisen oder ein id Form zuweisen und das Element mit der ID formid:from
erhalten.
Andere Tipps
Gibt es eine Möglichkeit JSF2 nicht zu ändern ids zu zwingen?
Sie können in generierten HTML prependId="false"
Auf diese Weise erhält es sein aus anstelle von j_idt8. Von
prependId: Flag, das anzeigt, ob oder nicht, sollten diese Form prepend seine ID zu seinem Nachkommen von id während der clientId Generation verarbeiten. Wenn dieser Flag nicht gesetzt ist, ist der Standardwert true.
Wie kann ich dieses Element in z.B. jQuery?
Sie können ancestorComponent:from
in jQuery verwenden dieses Element zu erhalten.
Eigentlich j_idt8 in j_idt8: von ist automatisch generierten ID der Ahnen Komponente Ihres <h:inputText/>
zum Beispiel
<h:form id="form">
<h:inputText id="from" value="#{fromToMBean.fromName}"/>
</h:form>
Jetzt erzeugt id von Eingabetext wäre Form: von
Wenn Sie bieten keine ID an eine Komponente als Ihr Browser erzeugt, die dynamisch. Also vergessen Sie nicht ids Komponenten.
In JSF 1.2 können Sie forceId = "true" verwenden. Ich bin mir nicht sicher, ob Sie t verwenden: Eingang in JSF 2, aber Sie sollten in der Lage sein. Dann IDs es in HTML sein wird, was Sie erwarten.
Um die vollständige ID für eine Komponente zu erreichen, verwenden EL implizite Objekte und deren Eigenschaften wie #{cc.clientId}
und #{component.clientId}
. Quelle: Acquire vollständigen Präfix für eine Komponente clientId in Container mit JSF 2.0 benennen.
Sie können mit jquery. Einfach, einen Selektor definiert den Text verwenden soll es enthält. So etwas wie folgt aus:
$( "input[name*='from']" )
'* =' verwendet wird, zu sagen, dass der Name Attribut einige Zeichenfolge enthält. Auch gibt es '~ =' mit ähnlicher Bedeutung.
Für detaillierte Erläuterungen und Beispiele finden Sie http://api.jquery.com/attribute-contains -selector /