如何使用 JavaScript 获取 JSF 表数据

how to use javascript to get jsf table data?

本文关键字:数据 JSF 获取 何使用 JavaScript      更新时间:2023-09-26

我从支持bean ArrayList填充了jsf数据表。现在我需要将值与表的一列中的值进行比较,我该怎么做?

我的数据表:

<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);
}

这不是 JSF 问题。这与使用纯 HTML 时没有什么不同。JavaScript 不适用于 JSF 源代码,而仅适用于其生成的 HTML 输出(正如您可以通过右键单击并在浏览器中查看源代码看到的那样)。您的具体错误是您使用了返回<td>的整个 HTML 内容的element.innerHTML,而不是首先从<td>获取 <input> 元素,然后再从其 value 属性获取。

这应该给你<td>的第一个<input>元素的值,为简洁起见省略了预检查:

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

我只想知道在JavaScript而不是JSF中做这一切的用处。