如何在不使用ajax的情況下在jsf中的數據表中進行列級別渲染?如何在jsf中的數據表中進行列級渲染?
例如,第一列有一個下拉菜單選擇。基於選擇,我需要在第二列中啓用按鈕。
任何人都可以幫助我做到這一點。
如何在不使用ajax的情況下在jsf中的數據表中進行列級別渲染?如何在jsf中的數據表中進行列級渲染?
例如,第一列有一個下拉菜單選擇。基於選擇,我需要在第二列中啓用按鈕。
任何人都可以幫助我做到這一點。
如果「列級渲染」你的意思是「一種方式,表重新呈現一列」,那麼答案是 - 你不能。瀏覽器不允許這樣做。您需要分別在colimn中重新提交每個td。
如果你僅僅意味着「動態更改表的某些部分」,則:
如果「AJAX」你的意思是「JavaScript的」,那麼 - 你不能。你需要一些JavaScript來做到這一點。
如果用「ajax」表示「連接到服務器」,那麼你可以編寫自己的Javascript來完成客戶端的工作。
訣竅是 - 一旦你開始使用JavaScript來啓用和禁用按鈕,你必須一直走下去:不僅在選擇一個選項下拉列表改變時,也當表第一次呈現。如果你不這樣做,你將不得不碰撞演示邏輯,在Java中,一個在Javascript中。
可能被應用到JSF輸出將是工作的Javascript解決方案的例子:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js'></script>
<table id='mytable'>
<tr>
<td><select>
<option>A</option><option>B</option>
</select></td>
<td><input type='button' value='test'></td>
</tr>
<tr>
<td><select>
<option>A</option><option>B</option>
</select></td>
<td><input type='button' value='test'></td>
</tr>
</table>
<script>
function fix_table(){
$('#mytable select').each(function(){
$('input', this.parentNode.parentNode).attr('disabled',this.value=='B')
})
}
fix_table();
$('#mytable select').change(function(){fix_table()})
</script>
當您選擇從下拉「B」,相關的按鈕被禁用。
在我看來,這是一個非常糟糕的解決方案。
您應該使用JSF及其提供的工具(如ajax標記)或切換技術。混合技術使得它們成倍增加,混合你不擅長的東西(因爲你不得不提出這個問題 - 你當然不會)會適得其反。
到目前爲止您嘗試過了什麼,您使用的是JSF 2.0嗎?這聽起來像是你想要使用Ajax的完美例子。 – Mark