1

我正在尝试使用<a4j:commandButton>. 但是当我使用rendereddisabled属性(也从动作方法评估)时,它不起作用。

这是我的代码片段:

<a4j:region block="true" >
    <a4j:form id="download_form">
        <a4j:commandButton id="download_button"
          action="#{studentInfo.actionDownload}"
          onclick="#{rich:component('download_progress')}.show(); setPopupPosition('#{rich:clientId('download_progress')}');"
          reRender="dlod_msg_grd"
          oncomplete="#{rich:component('download_progress')}.hide();
          value="Download a student" 
          rendered="#{studentInfo.validForDownload}"
          />
    </a4j:form>
</a4j:region>

如果我使用rendered="#{studentInfo.validForDownload}"一切rendered="#{true}"正常,则调用 bean 的操作方法。但是我现在用的方法不行

studentInfo.validForDownload正在评估为真,因此正在a4j:commandButton正确渲染。

4

1 回答 1

1

由于您的studentInfo托管 bean 属于请求范围,正如您在对 Luiggi 的回复中所说,rendered="#{studentInfo.validForDownload}"它将始终评估为默认值。正如 Luiggi 所提到的,您必须使用a4j:keepAlive才能获得所需的行为,但您的代码需要稍作改动:

<a4j:keepAlive beanName = "studentInfo"/>
<h:form id="download_form">  
  <a4j:region block="true" >
    <a4j:commandButton id="download_button"
      action="#{studentInfo.actionDownload}"
      onclick="#{rich:component('download_progress')}.show(); setPopupPosition('#{rich:clientId('download_progress')}');"
      reRender="dlod_msg_grd"
      oncomplete="#{rich:component('download_progress')}.hide();
      value="Download a student" 
      rendered="#{studentInfo.validForDownload}"/>
  </a4j:region>
</h:form>

我不知道这是否a4j:form有效果,但肯定h:form会起作用

于 2013-05-30T07:15:02.800 回答