使用ajax更新h:dataTable中列的值

时间:2014-03-11 16:13:52

标签: ajax jsf datatable

我搜索解决方案没有提供任何帮助。所以我会在stackoverflow.com上提出我的第一个问题 - 如果我能以任何方式做得更好,请告诉我。

问题: 我需要更新<h:dataTable>的列,具体取决于同一<h:inputText>中其他列的dataTable之一中的值。检测到valueChange时将呈现该列。渲染列后,我希望焦点保持不变,不要重置并指向页面顶部的某个位置。

我的解决方案只有一半工作: 1。

<h:column>
    <h:inputText value="#{myBean.value}">
        <a4j:ajax event="valueChange"
            listener="#{myBean.updateColumn}" execute="@this"
            render="@form"></a4j:ajax>
    </h:inputText>
</h:column>

这会在呈现整个表单时产生预期的行为。但是这样我失去了注意力,根本不是用户友好的。

2

<h:column>
    <h:inputText value="#{myBean.value}">
        <a4j:ajax event="valueChange"
            listener="#{myBean.updateColumn}" execute="@this"
            render="IdOfMyColumn"></a4j:ajax>
    </h:inputText>
</h:column>

这是我的第二次尝试。我为我的列分配了一个ID,即列中的<h:panelGroup>。看起来像这样:

<h:column>
    <h:panelGroup id="IdOfMyColumn">
        <h:outputText value="#{myBean.updatedValue}">   
    </h:panelGroup>
</h:column>

这可悲地导致只更新行。我更改值的确切行。至少,焦点保持原样。

你可以看到,我的两个解决方案都解决了我的一个问题。可悲的是,我无法弄清楚,如何将它们结合起来。我需要一种方法来使用render="@form"的解决方案1来保持我的关注,或者更新整个列而不是单行的方法。

任何帮助表示赞赏!我正在使用JSF 2.0和Richfaces 4.3,在IBM Portal Server上部署(并且无法更改)。谢谢!

1 个答案:

答案 0 :(得分:0)

自己找到解决方案!写下问题有助于解决问题:)不太好,但以理想的方式工作。

而不是一个具有不同列的单个dataTable,而是每列使用一个dataTable。这样我就可以渲染dataTables(使用单列)。

如果您有改进我的解决方案的建议,请随意。