0
我有jsf datatable從支持bean ArrayList填充。現在我需要將值與表格中一列中的值進行比較,我該如何做?如何使用JavaScript獲取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> </f:verbatim>
<h:inputText value="#{tabl.numbers}"
id="numbers">
</h:inputText>
</t:column>
我的表結構:
<tbody id="myForm:data:tbody_element">
<tr>
...
<td> <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> <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);
}
標籤名稱應該是inputText,這是行不通的。而且,客戶端驗證與服務器端不同。除非您知道如何打破生命週期並更新託管bean中的屬性值 – Celia 2012-04-25 12:51:39
在瀏覽器中打開頁面,右鍵單擊並*查看源*。你看到''嗎?不,你只能看到'。這也正是JavaScript所看到的。這正是我想在我的回答中告訴你的。如果它不適合你,那麼你已經拋棄了你的問題的細節。但是現在您應該認識到,JavaScript並沒有像在web服務器中那樣看到JSF源代碼,但它只能在web瀏覽器檢索到的情況下看到它生成的HTML。 –
BalusC
2012-04-25 12:52:51
好的,所以我必須使用輸入。我在我的頁面上顯示了這一點: