【发布时间】:2014-01-08 13:04:53
【问题描述】:
首先,我必须说,我已经阅读了这里和 primefaces 论坛上有关文件上传器问题的所有(至少很多 :))问题。
我的配置:
Primefaces 4
JSF 2.2
春天
Apache Tomcat 7
Maven
我正在将 Richfaces 项目转换为 primefaces,但我遇到了一个未调用处理程序方法的 fileUpload 组件。
我已经尝试(虽然我知道从 Primefaces 4 开始没有必要)将过滤器放在 web.xml 中。我也试过没有过滤器。我有弹簧安全过滤器和语言过滤器等,但 PF 是第一个。我也尝试将调度程序设置为 FORWARD。
我在 Maven 中拥有所有需要的依赖项(公共 - 我知道从版本 4 开始它不是必需的,但我尝试过)
xhtml 部分:
<h:form enctype="multipart/form-data">
... /* not relevant code here */ ...
<p:graphicImage value="#{systemParamsController.image}"
id="logo" />
<p:fileUpload
fileUploadListener="#{systemParamsController.listener}"
fileLimit="1" allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
uploadLabel="#{msg['button.upload.jpg']}"
cancelLabel="#{msg['button.cancel']}"
invalidFileMessage="alert('#{msg['upload.invalidtype']}');"
update="logo" mode="advanced">
</p:fileUpload>
<p:growl id="messages" showDetail="true" />
</h:panelGrid>
</h:panelGroup>
<p:commandButton value="#{msg['button.save']}" onclick="this.disabled=true" oncomplete="this.disabled=false"
action="#{systemParamsController.save}" styleClass="qs-button"
ajax="false" />
</h:panelGrid>
</p:panel>
</center>
</h:form>
支持 bean:
public synchronized void listener(FileUploadEvent event) throws Exception {
logger.debug("uploadListener!");
UploadedFile item = event.getFile();
getModel().getCustomer().setLogo(imageResizer.doResize(item.getContents(), 30, Side.HEIGHT));
}
如果我点击选择,我可以选择一个文件,但之后什么都没有发生。没有调用处理程序,因为没有日志消息,上传文件按钮处于非活动状态。我以前使用过这个组件来解决更复杂的问题而没有问题,所以我确定我遗漏了一些明显的东西。
提前感谢您的任何帮助!
【问题讨论】:
-
打开你最喜欢的 Javascript 控制台...它是否给出任何有意义的错误?你的backing bean的范围是什么?
-
:) 对 js 控制台提示表示感谢……invalidFileMessage 中的替换文本存在语法错误……非常感谢!
标签: java spring primefaces jsf-2.2