我搜索解决方案没有提供任何帮助。所以我会在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上部署(并且无法更改)。谢谢!
答案 0 :(得分:0)
自己找到解决方案!写下问题有助于解决问题:)不太好,但以理想的方式工作。
而不是一个具有不同列的单个dataTable,而是每列使用一个dataTable。这样我就可以渲染dataTables(使用单列)。
如果您有改进我的解决方案的建议,请随意。