CommandButton操作在insideModalPanel中不起作用

时间:2011-07-20 02:35:39

标签: jsf button command panel modal-dialog

h:commandButton操作在modalPanel中不起作用。

我使用t:inputFileUpload组件上传文件。在我的richModalPanel中有一个h:commandButton

我的要求:浏览文件后,点击上传 commandButton,然后我想在ModalPanel内部显示所选的文件名。

我的问题是: 当我在modalPanel中单击commandbutton时,在bean中没有调用commandButton动作,并自动关闭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 :(得分:0)

将domElementAttachment =“form”用于模态面板

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

答案 1 :(得分:0)

其他打印件是否显示在您的日志中?

您是否使用@Named或@ManagedBean注释了FileUpload.java?及其#{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">

答案 2 :(得分:0)

我不确定它们是否相关但我在使用带有enctype =“multipart / form-data”的表单中的h:commandLink时遇到了类似的问题。如果我从表单中删除此属性,则可以使用。