Действие CommandButton не работает в insideModalPanel - PullRequest
0 голосов
/ 20 июля 2011

ч: действие commandButton не работает в модальной панели.

Я использую компонент t: inputFileUpload для загрузки файла. В моей richModalPanel есть одна h: commandButton

Мое требование: После просмотра файла и нажатия upload commandButton, я хочу показать выбранное имя файла внутри ModalPanel.

Моя проблема: Когда я нажимаю кнопку команды в modalPanel, не вызывается действие commandButton в bean-компоненте, и автоматически закрываю modalPanel.

В этом методе запуска метода ... просто я положил System.out.println ("Процесс загрузки должен быть запущен ..."); Даже этот вывод не распечатывается в моем журнале tomcat.

<body>

<h:form id="UploadForm" binding="#{FileUpload.intiForm}">

  <a4j:outputPanel id="uploadOutputPanel">

    <a4j:commandButton value="ShowModalPanel" 
                       action="#{FileUpload.showUploadPanelAction}"
                       oncomplete="#{rich:component('uploadImagePanel')}.show()"
                       reRender="uploadImagePanel,uploadOutputPanel"/>
  </a4j:outputPanel>
</h:form>

<rich:modalPanel id="uploadImagePanel" moveable="true" top="150" width="400" autosized="true">

  <h:form id="uploadForm" enctype="multipart/form-data" >

      <h:panelGrid id="uploadPanelGridId" columns="2">

            <t:inputFileUpload id="uploadFile"
                               value="#{FileUpload.logoImageFile}"
                               size="54"/>

            <h:commandButton id="UploadButton" 
                             value="Upload"
                             action="#{FileUpload.uploadFileAction}"/>

            <h:outputText value="Uploaded File Name : #{FileUpload.fileName}"/>

       </h:panelGrid>

</h:form> </rich:modalPanel> </body>

лица-config.xml

<managed-bean>
    <managed-bean-name>FileUpload</managed-bean-name>
    <managed-bean-class>com.jsf.fileupload.FileUpload</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
</managed-bean>

FileUpload .java

import javax.faces.component.html.HtmlForm;
import org.apache.myfaces.custom.fileupload.UploadedFile;
public class FileUpload
{

private HtmlForm intiForm;
private String fileName;
private UploadedFile logoImageFile;


public String showUploadPanelAction()
{
    System.out.println("Show Upload Panel Action ....."); //This line showing in tomcat log, when i click "ShowModalPanel" button --> a4j:commandButton
    return "";
}

public String uploadFileAction()
{
    System.out.println("Uploading process to be start....");  //But this line NOT show in my tomcat log, when i click "UploadButton" --> h:commandButton
    System.out.println("logoImageFile : " + logoImageFile);

    if(logoImageFile != null)
    {
        fileName = logoImageFile.getName();
    }

    return "";
}

public HtmlForm getIntiForm(){
    System.out.println("Page initializing......");  //This line showing in tomcat log, when the page loading time
    return intiForm;
}

public void setIntiForm(HtmlForm intiForm) {
    this.intiForm = intiForm;
}

public UploadedFile getLogoImageFile(){
    return logoImageFile;
}

public void setLogoImageFile(UploadedFile logoImageFile){
    this.logoImageFile = logoImageFile;
}

public String getFileName(){
    return fileName;
}

public void setFileName(String fileName) {
    this.fileName = fileName;
}

}

Пожалуйста, помогите мне .. Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 20 июля 2011

Есть ли в вашем журнале другие отпечатки?

Вы аннотировали файл FileUpload.java с помощью @Named или @ManagedBean? И его #{fileUpload.xxx}, а не #{FileUpload.xxx}.

И я бы тоже поменял

<h:commandButton id="UploadButton" 
                 value="Upload"
                 action="#{FileUpload.uploadFileAction}"/>

с

<a4j:commandButton id="UploadButton"
                   value="Upload"
                   action="#{FileUpload.uploadFileAction}"
                   reRender="uploadImagePanel,uploadOutputPanel">
0 голосов
/ 27 апреля 2012

Я не уверен, связаны ли они, но я сталкиваюсь с подобной проблемой при использовании и h: commandLink внутри формы с enctype = "multipart / form-data". Если я удалю это свойство из формы, оно будет работать.

0 голосов
/ 20 июля 2011

Используйте domElementAttachment = "form" для модальной панели

<rich:modalPanel id="uploadImagePanel" moveable="true" top="150" width="400"  autosized="true" domElementAttachment="form"> </rich:modalPanel>
...