2012-07-11 54 views
0

我使用Richfaces 3.3工作在JSF 1.2应用程序上。我有一个弹出窗口,其中包含rich:extendedDataTable。当我点击表格中的一行时,我想启用或禁用一个按钮,我使用a4j:support event="onRowClick"richfaces a4j:支持事件意外调用后端方法

下面是一些代码:

<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

a4j:support标记上尝试使用ajaxsingle="true"。由于在onrowclick触发请求时您正在使用h:form,所以在更新模型阶段,将在服务器上处理h:表格内的所有组件。

希望这会有所帮助。

+0

ajaxSingle =“true”不能帮助我,因为我想要处理一些其他组件。 – 2012-07-12 09:18:28

+0

您可以在a4j:support标签中使用流程属性,然后列出您要处理的所有组件。 – 2012-07-12 10:07:47

0

它不是明智的嵌套<h:form>秒,但我们可以有多个<h:form> S,尝试 以这样的方式使<h:commandButton>是一个h:form<h:modalPanel>是另一种形式

希望这有助于修改代码。你也可以尝试<a4j:form>modalPanel

相关问题