0

我有从支持 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);
}
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;

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

于 2012-04-24T18:45:04.687 回答