2012-04-24 16 views
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>&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); 
} 

回答

0

這不是JSF問題。與使用純HTML時沒有什麼不同。 JavaScript不適用於JSF源代碼,但僅適用於其生成的HTML輸出(如右擊和在瀏覽器中查看源代碼)。您的具體錯誤是您使用了element.innerHTML,它返回<td>的整個HTML內容,而不是從<td>第一個然後value屬性獲取<input>元素。

這應該給你<td>的第一<input>元素的值,預檢查略去了:

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

我只知道做這一切在JavaScript中,而不是在JSF的實用性。

+0

標籤名稱應該是inputText,這是行不通的。而且,客戶端驗證與服務器端不同。除非您知道如何打破生命週期並更新託管bean中的屬性值 – Celia 2012-04-25 12:51:39

+0

在瀏覽器中打開頁面,右鍵單擊並*查看源*。你看到''嗎?不,你只能看到'。這也正是JavaScript所看到的。這正是我想在我的回答中告訴你的。如果它不適合你,那麼你已經拋棄了你的問題的細節。但是現在您應該認識到,JavaScript並沒有像在web服務器中那樣看到JSF源代碼,但它只能在web瀏覽器檢索到的情況下看到它生成的HTML。 – BalusC 2012-04-25 12:52:51

+0

好的,所以我必須使用輸入。我在我的頁面上顯示了這一點:   價值是我需要的。錯誤消息爲'getElementsByTagName(...)[0] .value'爲空或不是對象 – Celia 2012-04-25 13:13:25

相關問題