在jsf中如何在datatable中进行列级渲染?

在jsf中如何在datatable中进行列级渲染?,jsf,datatable,rendering,Jsf,Datatable,Rendering,在jsf中如何在不使用ajax的情况下在datatable中进行列级渲染 例如,具有下拉菜单选择的第一列。根据选择,我需要启用第二列中的按钮 有人能帮我吗 如果“列级渲染”是指在表中重新渲染单个列的方法,那么答案是-您不能。浏览器不允许这样做。您需要分别在一个列表中重新提交每个td 如果您的意思是动态更改表格的某些部分,那么: 如果说ajax是指javascript,那么-你不能。要做到这一点,您需要一些javascript 如果说ajax是指连接到服务器,那么-您可以编写自己的Javascri

在jsf中如何在不使用ajax的情况下在datatable中进行列级渲染

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

有人能帮我吗

如果“列级渲染”是指在表中重新渲染单个列的方法,那么答案是-您不能。浏览器不允许这样做。您需要分别在一个列表中重新提交每个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标记,或者使用switch技术。混合技术使它们的难度成倍增加,而混合你并不擅长的东西,因为你不得不问这个问题——你肯定不会——会适得其反。

到目前为止你做了哪些尝试,你在使用JSF 2.0吗?这听起来像是一个使用Ajax的完美例子。感谢您的及时回复。我正在使用JSF1.2。我的意思是,如果我从数据表第一列的下拉列表中选择,我需要在第二列中添加一个文本框。最后,我成功地实现了此渲染..:@苏雷什:很高兴听到这个消息。是的,使用1.2定制javascript实际上是唯一的选择。