我使用Richfaces 3.3处理JSF 1.2应用程序。我有一个包含rich:extendedDataTable
的弹出窗口。当我单击表格中的一行时,我想启用或禁用按钮,我使用a4j:support event="onRowClick"
。
以下是一些代码:
<h:form>
<rich:panel id="main">
<a4j:commandButton id="completed" value="Completed"
rendered="#{bean.completedCase}" />
<a4j:commandButton value="Open"
oncomplete="#{rich:component('popupId')}.show(...)">
</a4j:commandButton>
<rich:modalPanel id="popupId">
<a4j:region>
<rich:extendedDataTable id="source" value="#{bean.sourceItems}"
var="sourceItem" selectionMode="single" >
<a4j:support event="onRowClick" eventsQueue="pickQueue" reRender="copy" >
<f:setPropertyActionListener value="#{sourceItem}"
target="#{bean.sourceSelection}" />
</a4j:support>
....
</rich:extendedDataTable>
<a4j:commandButton id="copy" value="Copy" />
</a4j:region>
<a4j:commandButton value="Ok" reRender="completed"
oncomplete="#{rich:component('popupId')}.hide();return false;">
</a4j:commandButton>
</rich:modalPanel>
</rich:panel>
</h:form>
问题是,当我单击一行时,然后在后端调用一些用于呈现按钮的方法:rendered="#{bean.completedCase}"
,但按钮不在弹出窗口上,而是在超出页面的页面上弹出。知道为什么有其他方法被称为用于表格的方法吗?
答案 0 :(得分:0)
尝试在ajaxsingle="true"
标记上使用a4j:support
。由于您在onrowclick触发请求时使用h:form
,因此在更新模型阶段,将在服务器上处理h:表单中的所有组件。
希望这会有所帮助。
答案 1 :(得分:0)
不建议嵌套<h:form>
但我们可以有多个<h:form>
s,请尝试
修改代码的方式是<h:commandButton>
在一个h:form
中,而<h:modalPanel>
是另一种形式
希望这会有所帮助。你也可以试试<a4j:form>
modalPanel