Я использую,р: fileUploadListener не вызывается
- GlassFish 4.0
- JSF 2,2
- Mojarra 2.2.0
- Primefaces 3,5
У меня есть этот компонент fileUpload
на странице XHTML.
<h:form enctype="multipart/form-data">
<p:fileUpload id="txtCatImage"
value="#{testManagedBean.uploadedFile}"
mode="advanced"
sizeLimit="100000"
multiple="false"
showButtons="true"
allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
fileUploadListener="#{testManagedBean.fileUploadListener}"/>
<p:message for="txtCatImage" showSummary="false"/>
<p:commandButton id="btnSubmit"
actionListener="#{testManagedBean.insert}"
icon="ui-icon-check" value="Save"/>
</h:form>
Это соответствующий управляемый bean-компонент.
@ManagedBean
@ViewScoped
public final class TestManagedBean implements Serializable {
private UploadedFile uploadedFile;
private static final long serialVersionUID = 1L;
public TestManagedBean() {}
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public void fileUploadListener(FileUploadEvent event) {
uploadedFile = event.getFile();
System.out.println("fileUploadListener invoked.");
}
public void insert() {
if (uploadedFile != null) {
System.out.println(uploadedFile.getFileName());
} else {
System.out.println("The file object is null.");
}
}
}
Слушатель загрузки файлов, как упоминалось, - fileUploadListener()
никогда не вызывается.
Фильтр загрузки файлов отображается в web.xml
следующим образом.
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
Я добавил Apache-commons-fileupload
и Apache-commons-io
к классам. То же самое работает в моем предыдущем проекте с Spring/JSF.
Я не вижу, что мне здесь не хватает. Нужно ли что-то делать с версией сервера?
* Я добавил Apache-Викисклад FileUpload и Apache-Викисклад ИО пути к классам. * Как именно вы сделали этот шаг? Есть много способов сделать это, из которых, в свою очередь, многие ошибочны для ВОЙНЫ. Вы подтвердили, что эти JAR-файлы попали в папку '/ WEB-INF/lib' встроенного/развернутого WAR-файла? – BalusC
Я только что проверил их. После развертывания приложения оба файла jar присутствуют в '$ Project/Project-war/build/web/WEB-INF/lib' – Tiny
Хорошо.Что делать, если вы удалите/отключите все связанные с безопасностью фильтры и прочее? (просто чтобы исключить их из-за причины) Что делать, если вы попробуете JSF 2.1 вместо этого? (JSF 2.2 поставляется с собственным собственным файловым загрузчиком файлов, не уверен, как работает PrimeFaces 3.5, никогда не пробовал сам). – BalusC