Я использовал версию jsf 2.2.x и primefaces 4.0. Я также использовал версии jquery, такие как 1.10.1 и 2.1.4
<h:form id = "uploadForm" enctype = "multipart/form-data">
<p:fileUpload fileUploadListener = "#{bean.handleFileUpload}"
mode = "advanced" dragDropSupport = "false"
update = "messages"
sizeLimit = "10000000"
fileLimit = "3"
allowTypes = "/(\.|/)(gif|jpe?g|png)$/" />
<p:growl id = "messages" showDetail = "true" />
</h:form>
а также я использую заголовки, как показано ниже.
<h:head>
<title><h:outputText value = "#{userBean.title}"/> - Dashboard</title>
<meta http-equiv = "keywords" content = "xyz"/>
<meta http-equiv = "description" content = "Dashboard"/>
<meta http-equiv = "content-type" content = "text/html; charset=UTF-8"/>
</h:head>
Между тегами заголовка нет никаких других ссылок или тегов сценария. только теги стиля.
web.xml
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bootstrap</param-value>
</context-param>
<context-param>
<param-name>primefaces.UPLOADER</param-name>
<param-value>commons</param-value>
</context-param>
<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>/faces/</url-pattern>
</servlet-mapping>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>51200</param-value>
</init-param>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>/tmp/</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
Bean.java
@ManagedBean(name = "bean")
@ViewScoped
public class Bean {
public void handleFileUpload(FileUploadEvent event) {
System.out.println("invoked");
FacesMessage message = new FacesMessage("Succesful",
event.getFile().getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
приведенный выше код извлекается из всего кода. пожалуйста, помогите мне решить эту проблему. спасибо!
да. Я также использую p:inputText
. Он также успешно вызывает методы bean. но когда я использую p:fileUpload
, он никогда не вызывал методы резервного bean-компонента, и файл не загружался куда-либо. в лог-файле ошибок нет
@Kukeltje, у вас есть идеи по этому поводу? Если у вас есть идеи, вы можете мне помочь?
Вы вручную включаете файл jquery js где-нибудь? И попробуйте сделать минимальный воспроизводимый пример и попробуйте (просто попробуйте) с минимальный воспроизводимый пример, если он работает с более новой версией PF.
Спасибо, парень ... Ты классный, и еще раз спасибо за эту идею. Теперь она отлично работает!
Работает, если еще добавить на страницу
p:inputText
? Или есть другие предыдущие ошибки?