Erste JSF-Komponente definiert mit Javascript
Ich bin erstellen einer Benutzeroberfläche mit JSF, und ich möchte den Wert eines Textfeldes zu bieten, die standardmäßig für eine zweite wenn die zweite wurde noch nicht festgelegt. Der entscheidende code sieht etwa so aus:
<h:outputScript>
function suggestValue2() {
var value2 = document.getElementById('value2').value;
if (value2 == "") {
document.getElementById('value2').value = document.getElementById('value1').value;
}
}
</h:outputScript>
<h:inputText
id="value1"
onblur="suggestValue2();" />
<h:inputText
id="value2" />
Das problem ist das nicht wirklich funktionieren. Die tatsächlichen IDs der beiden input-Elemente mit dem Präfix " einige JSF-generierte Werte, die tanks, die getElementById
Anrufe. Was ist der beste Weg für mich, das zu schaffen, was ich versuche zu erreichen, hier?
Edit: ich sollte anmerken, dass das erscheinen in einem composite-Bauteil, das könnte wind-up erscheinen mehrmals auf eine einzelne Seite. JSF dynamisch Einstellung der tatsächlichen ID repräsentiert gewünschte Verhalten.
- Der einfachste Weg, um dieses Problem zu lösen wäre mit
prependId="false"
in der form. Ein anderer Weg wäre, es zu finden, mit der Formular-id und die id der Komponente, wiemyFormId:value1
, wie vorgeschlagen, hier.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Binden Sie die Komponente in der Ansicht,
so, dass Sie können einfach drucken Sie Ihre client-ID an anderer Stelle in der Ansicht von
UIComponent#getClientId()
.Als Sie erwähnt, dass Sie in einer zusammengesetzten Komponente, kann es gut sein, zu wissen, dass zusammengesetzte Komponente die eigene client-ID ist bereits über
#{cc.clientId}
. So, mehr empfohlen, die alternative wäre:Siehe auch:
Jsf verwendet ein Konzept der "naming-Container", die sagt, dass die id nicht eindeutig sein muss in einen bereitgestellten container. Vorausgesetzt, der container hat eine Id. Also, wenn Sie sind nicht mit einer Id, um die container jsf hängt das unberechenbare Werte, bevor Sie das element. Mit id für den container wird es containerid:Elemente-id. Und dies kann verwendet werden, in JavaScript zuverlässig