如何在jsf的datatable中做列级渲染



如何在不使用ajax的情况下在jsf中进行数据表的列级渲染?

例如,第一列有一个下拉菜单选择。根据选择,我需要在第二列中启用按钮。

有谁能帮我一下吗?
  1. 如果通过"列级渲染"你的意思是"一种在表中渲染单列的方式",那么答案是-你不能。浏览器不允许这样做。您需要在一列中分别呈现每个td。

  2. 如果你的意思是"动态更改表格的某些部分",那么:

    • 如果"ajax"是指"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标记),或者切换技术。混合技术会使它们成倍地变得困难,而混合你并不擅长的东西(既然你不得不问这个问题——你肯定不擅长)会适得其反。

相关内容

  • 没有找到相关文章

最新更新