PrimeFaces的Fileupload在我的liferay portlet中不起作用?

时间:2013-09-25 07:42:29

标签: primefaces liferay

我正在使用primefaces 3.3.1和liferay 6。

在我的portlet中,我想为primefaces添加fileUpload。但每当我的页面加载时,这个primefaces组件都不会通过firebug看到。我需要让它的显示屏阻止。

此外,fileUpload下面包含javascript方法或ajax的任何组件都无法正常工作。

我注意到,只要我的页面加载,就会在firebug中显示一个错误,例如

this.form.fileUpload is not a function

我想由于这个错误,我的fileUpload无效。但我无法修复它。

<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" mode="advanced" fileLimit="3"/>

4 个答案:

答案 0 :(得分:1)

将您的primefaces升级到3.5版并将commons-fileupload添加到您的项目

答案 1 :(得分:0)

我认为这是因为你没有在项目库中添加commons-fileupload和commons-io。另外,不要忘记在web.xml中定义FileUploadFilter。

让我告诉你我之前如何在我的primefaces上传文件,希望这个例子可以解决你的问题。

我的xhtml页面:

<p:fileUpload allowTypes="/(\.|\/)(csv)$/" fileUploadListener="#{fileBean.handleFileUpload}"/>

我的FileBean.java:

public class FileBean {
private UploadedFile file;

public void handleFileUpload(FileUploadEvent event) throws Exception {
    file = event.getFile();

    InputStream input = file.getInputstream();
    OutputStream output = new FileOutputStream(new File("D:/UploadedFile/", file.getFileName()));

    IOUtils.copy(input, output);
}

将此添加到您的web.xml:

<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>
    org.primefaces.webapp.filter.FileUploadFilter
</filter-class>
</filter>

正如我之前所说,将commons-fileupload和commons-io添加到项目库中。

答案 2 :(得分:0)

修复了Liferay Portal 6.0.x中的此问题。

您可以将此代码添加到web.xml并尝试吗?

<!-- Workaround for PrimeFaces 3.2: -->
<context-param>
<param-name>com.liferay.faces.bridge.primeFileUploadForceResourceURL</param-name>
<param-value>true</param-value>
</context-param>

Here is link了解更多信息。

答案 3 :(得分:0)

在尝试了关于web.xml,pom.xml的所有其他内容之后......我回到了显而易见的事情: - )

也许您只是忘记在上传元素周围打一个表单:

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

<p:fileUpload mode="simple" value="#{mgr.file}"/>

<p:commandButton value="Hochladen" ajax="false" onclick="start();" 
                action="#{mgr.uploadBescheid(bescheidTyp)}" update="growl"/>  
</h:form>

没有这一点,它就不会起作用......