0

バッキング Bean ArrayList から jsf データテーブルを作成しました。ここで、テーブルの 1 つの列の値と値を比較する必要があります。これを行うにはどうすればよいですか?

私のデータテーブル:

<t:dataTable var="tabl"
rowIndexVar="rownum" 
id="data" 
value="#{bean.sortedList}"
>

......... データを比較したい列:

<t:column>
    <f:facet name="header">
        <h:commandLink>
            <h:outputText  value="sortedList"/>
        </h:commandLink>
    </f:facet>
     <f:verbatim>&nbsp;</f:verbatim>
    <h:inputText value="#{tabl.numbers}"
                id="numbers">
    </h:inputText>
</t:column>

私のテーブル構造:

<tbody id="myForm:data:tbody_element">
<tr>
...
<td>&#160;<input id="myForm:data:0:workAreaNumberU" name="myForm:data:0:workAreaNumberU" type="text" value="0001" size="4" onkeyup="value_altered(0);"></td>
</tr>
....
<tr>
...
<td>&#160;<span id="_idJsp1:data:1:workAreaNumber">0104</span></td>
...
</tr>
</tbody>

最終的にこの方法で解決しました(私のテーブル構造に基づいています)

var table = document.getElementById("myForm:data:tbody_element");
var new_wa;
for (var i = 0, row; row = table.rows[i]; i++) {
    var new_wa_box = document.getElementById("myForm:data:" + i + ":workAreaNumberU");
    if( new_wa_box != null ) {
        new_wa = new_wa_box.value;
    }else{
        new_wa_box = document.getElementById("myForm:data:" + i + ":workAreaNumber");
        new_wa = new_wa_box.innerHTML;
        }
    alert("row new_wa_box = "+new_wa);
}
4

1 に答える 1

0

これはJSFの問題ではありません。プレーンHTMLを使用する場合と違いはありません。JavaScriptはJSFソースコードでは機能しませんが、生成されたHTML出力でのみ機能します(ブラウザで右クリックして[ソースを表示]で確認できます)。具体的な間違いは、最初に要素を取得してからその属性を取得する代わりに、element.innerHTMLのHTMLコンテンツ全体を返すを使用したことです。<td><input><td>value

<input>これにより、の最初の要素の値が得られます。<td>簡潔にするために、事前チェックは省略されています。

var value = col.getElementsByTagName("input")[0].value;

これをすべてJSFではなくJavaScriptで行うことの有用性だけを考えています。

于 2012-04-24T18:45:04.687 に答える