1

jsf2 と richfaces 4.X を使用していますが、richfaces が有効な入力フィールドの現在の値を取得するにはどうすればよいですか? getElementById('field_name').vlue と等しい

findcomponent.value や element.value などの名前のメソッドをいくつか試してみましたが、ページがロードされていたときに古い値が返されました。

4

3 に答える 3

4

rich:clientId関数を使用して、正しい識別子をJavaスクリプトにレンダリングする必要があると思います。

例えば:

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

ファセット内のRichFacesrich:clientIdも参照してください。

于 2012-04-13T08:58:40.313 に答える
1

生成された HTML を確認すると、すべての JSF / RF 要素に : のような ID があることがわかります。例えば:

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

生成される HTML は次のようになります。

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

したがって、JavaScript では、この ID で要素を参照できます。

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

rich:tabまた、またはのような RF 複合 HTML コンポーネントについては、rich:calendarHTML によって生成されたコンポーネント ID を使用できますが"#{rich:clientId('field_name')}"、@DRCB が彼の投稿で説明しているように、お勧めします。

于 2012-04-13T13:44:36.640 に答える
0

richfacesコンポーネントの値を取得するには、rich:componentメソッドとgetValue()メソッドを使用します。
jsfライブラリコンポーネントの値を取得するには、rich:elementメソッドとvalueJSメソッドを使用します。

例:

<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>

どちらもrich:dataTableでも機能し、datatableなどのIDを追加する必要はありません。Richfacesは非常に賢く、「現在の行」の例のIDを見つけます。

<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>
于 2013-03-06T15:01:35.190 に答える