2012-02-02 1 views
3

У меня есть страница, которая использует rich:fileUpload и , чего я хочу достичь, при первой загрузке страницы появляется файл fileUpload shoul (be rendered, my backingBean default - true, и поэтому он отображает правильно), и когда пользователь нажимает CommandButton Я хотел бы, чтобы скрыть FileUpload и показать outputText (это не происходит, нет ошибки на всех)Рисованные рисования с a4j: ajax

Как я могу решить эту проблему, мой pagelooks как

<div id="content"> 
     <a4j:outputPanel id="contentForm"> 
      <h:form enctype="multipart/form-data" 
        rendered="#{uploadBean.formRendered}"> 

       <br/><br/> 

       <h:selectOneRadio value="#{uploadBean.selectedOption}"> 
        <f:selectItems value="#{uploadBean.loadOptions}"/> 
       </h:selectOneRadio> 

       <br/> 

       <rich:fileUpload addLabel="Agregar" clearAllLabel="Quitar todos" 
           clearLabel="Quitar" deleteLabel="Quitar" 
           doneLabel="Completado" uploadLabel="Subir archivos" 
           fileUploadListener="#{uploadBean.doUpload}" 
           acceptedTypes="txt, csv" 
           noDuplicate="true"/> 

       <a4j:commandButton value="Iniciar validación" 
            action="#{uploadBean.doLaunchProcess}" 
            render="processLabel" 
            execute="@form" 
            /> 

      </h:form> 
     </a4j:outputPanel> 
     <a4j:outputPanel id="processLabel"> 
      <h:outputText 
       value="#{uploadBean.processStarted}" 
       rendered="#{not uploadBean.formRendered}"/> 
     </a4j:outputPanel> 
    </div> 

и код действия командыButton:

public String doLaunchProcess() { 
    formRendered = false; 
    InfoValidator iv = new InfoValidator(loadOptions, 
      selectedOption, userBean.getDependencia(), 
      userBean.getTipoDependencia(), userBean.getUsuario(), 
      userBean.getIdUsuario(), userBean.getEmail()); 
    iv.start(); 
    return "carga-archivos"; 
} 

Is кажется, что formRendered всегда оценивается истина, когда я хочу, чтобы это было ложным, когда пользователь нажимает на кнопку, и поэтому скрывает FileUpload и показать outputText.

UPDATE В основном то, что я хочу пользователю загружать файлы, когда пользователь нажимает на кнопку на пропадает компонент FileUpload и появляется outputText и сказал что-то вроде «Спасибо за загрузку»

Может быть, мой подход это неправильно, просто поставьте меня в правильном направлении, я немного путаюсь с материалом ajax.

Cheers,

+0

Что делать, если вы попробуете rerender = "processLabel" вместо render = "processLabel" – HRgiger

+0

a4j: commandButton не имеет атрибута 'reRender'. Я с richfaces 4.1 и Mojarra 2.1.6 и Tomcat – BRabbit27

+0

Я думаю, что он поддерживает cas, который я использовал :) Пожалуйста, проверьте http://stackoverflow.com/a/2243473/706695 или http://docs.jboss.org/ richfaces/latest_3_3_X/en/devguide/html/a4j_commandButton.html # 6.1.6.2.% 20Details% 20of% 20Usage – HRgiger

ответ

2

Наконец-то я сделал это!

Это код, позволяющий просмотреть все модификации. В основном мне пришлось обработать всю форму (execute="@form"), которую a4j: commandButton делает уже, а затем render="contentForm :processLabel".

Я только рендеринга (отрисовки?) Только processLabel и форма всегда была там, потому что я не обновлял мнение (я думаю, что это должно быть с деревом DOM, кто-то уточнить это, пожалуйста)

<div id="content"> 
     <a4j:outputPanel id="contentForm"> 
      <h:form enctype="multipart/form-data" 
        rendered="#{uploadBean.formRendered}"> 

       <br/><br/> 

       <h:selectOneRadio value="#{uploadBean.selectedOption}"> 
        <f:selectItems value="#{uploadBean.loadOptions}"/> 
       </h:selectOneRadio> 

       <br/> 

       <rich:fileUpload addLabel="Agregar" clearAllLabel="Quitar todos" 
           clearLabel="Quitar" deleteLabel="Quitar" 
           doneLabel="Completado" uploadLabel="Subir archivos" 
           fileUploadListener="#{uploadBean.doUpload}" 
           acceptedTypes="txt, csv" 
           noDuplicate="true"/> 

       <a4j:commandButton value="Iniciar validación" 
            action="#{uploadBean.doLaunchProcess}" 
            render="contentForm :processLabel"/> 

      </h:form> 
     </a4j:outputPanel> 
     <a4j:outputPanel id="processLabel"> 
      <h:outputText 
       value="#{uploadBean.processStarted}" 
       rendered="#{not uploadBean.formRendered}"/> 
     </a4j:outputPanel> 
    </div> 

бэк-бэк остается неизменным.

Cheers !!!