2012-04-13 15 views
1

Ich benutze jsf2 und richfaces 4.X Wie kann ich den aktuellen Wert des Richface-Eingabefeldes bekommen? gleichbedeutend mit getElementById ('field_name'). vlueJSF richfaces getElementById

Ich habe einige der Methoden wie findcomponent.value und element.value ausprobiert, aber sie geben mir einen alten Wert, der war, während die Seite geladen wurde b/c findcomponent und element method returns server Side UI.components stattdessen clientseitige Komponenten?

Antwort

4

Ich denke, Sie verwenden rich:clientId Funktion, um eine korrekte Kennung in Ihrem Java-Skript zu rendern.

Zum Beispiel:

var myElement = document.getElementById("#{rich:clientId('field_name')}"); 

Siehe auch RichFaces rich:clientId within facelets

1

Wenn Sie die HTML generiert überprüfen, konnte man sehen, dass jeder JSF/RF-Element seine ID hat wie:. Zum Beispiel:

<h:form id="frmSample"> 
    <h:inputText id="txtSample" value="#{mybean.someTextValue}" /> 
</h:form> 

Der HTML erzeugt wird:

<form method="POST"> 
    <input type="text" id="frmSample:txtSample" /> 
</form> 

Also, in JavaScript Sie das Element dieses Kenn könnte.

var txtValue = document.getElementById('frmSample:txtSample').value; 

Auch für die RF-Composite-HTML-Komponenten wie rich:tab oder rich:calendar Sie die Komponenten-ID von HTML erzeugt verwenden könnten, aber ich werde "#{rich:clientId('field_name')}" empfehlen als @DRCB in seinem Amt erklärt hat.

0

Um die richfaces-Komponentenwerte zu erhalten, verwenden Sie die Methoden rich: component und getValue().
Um die Werte der jsf-Bibliothekskomponenten zu erhalten, verwenden Sie die Methoden rich: element und jS-Wert.

Beispiel:

<h:form> 
    <h:inputText id="textField" value="#{bean.value1}" /> 
    <a4j:commandButton value="displayTextField" action="doSomething()" 
     onclick="alert('v:'+ #{rich:element('textField')}.value); return true;" /> 

    <rich:inplaceInput id="richField" value="#{bean.value1}" /> 
    <a4j:commandButton value="displayRichField" action="doSomething()" 
     onclick="alert('v:'+ #{rich:component('richField')}.getValue()); return true;" /> 
</h:form> 

Beide arbeiten auch in einem reichen: Datatable, ohne Zugabe der ID des Datentabelle oder so etwas. Richfaces ist sehr smart und die IDs der ‚aktuellen Zeile‘ finden Beispiel:

<h:form> 
    <rich:dataTable id="mydatatable" value="bean.findValues()" var="myvar"> 

     <rich:column> 

       <h:inputText id="textField" value="#{myvar.text1}" /> 
       <a4j:commandButton value="displayTextField" action="doSomething()" 
        onclick="alert('v:'+ #{rich:element('textField')}.value); return true;" /> 
     </rich:column> 

     <rich:column> 

      <rich:inplaceInput id="richField" value="#{myvar.text2}" /> 
      <a4j:commandButton value="displayRichField" action="doSomething()" 
        onclick="alert('v:'+ #{rich:component('richField')}.getValue()); return true;" /> 
     </rich:column> 

    </rich:dataTable> 
</h:form> 
Verwandte Themen