Я пытался использовать инструмент загрузки простых лиц (http://www.primefaces.org/showcase/ui/fileUploadSingle.jsf).Мне удается правильно отобразить его, и похоже, что он работает.Но когда я иду проверить базу данных, она пуста.Почему это не загрузка?Я уверен, что EJB, которые обращаются к базе данных, хорошо запрограммированы.
Также я замечаю это сообщение в консоли, когда иду на страницу, которая извлекает данные из БД.
SEVERE: строка 1:61 нет жизнеспособной альтернативы для символа ';'
Я не уверен, что это как-то связано с этим.Я не вижу других ошибок.
Мой код для инструмента загрузки выглядит следующим образом:
<p:fileUpload fileUploadListener="#{uploadController.handleFileUpload}"
allowTypes="*.txt;*.doc;*.pdf;" description="Text Documents"/>
Это управляемый компонент:
@ManagedBean
@RequestScoped
public class UploadController {
@EJB
private IFileUploaderEJB fileUploaderEJB;
private Logger logger = LoggerFactory.getLogger(UploadController.class);
public void handleFileUpload(FileUploadEvent event) {
String fileName = event.getFile().getFileName();
String contentType = event.getFile().getContentType();
byte[] bytes = event.getFile().getContents();
Garbage garbage = new Garbage();
garbage.setFilename(fileName);
garbage.setFile(bytes);
garbage.setDescription("info about the file");
garbage.setFileType(contentType);
fileUploaderEJB.uploadGarbage(garbage);
logger.info("Uploaded: {}", event.getFile().getFileName());
FacesMessage msg = new FacesMessage("Succesful", event.getFile()
.getFileName() + " is uploaded.");
FacesContext.getCurrentInstance().addMessage(null, msg);
}
Это EJBдоступ к БД (я уверен, что эта часть работает правильно):
@Stateless(name = "ejbs/FileUploaderEJB")
public class FileUploaderEJB implements IFileUploaderEJB {
@PersistenceContext
private EntityManager em;
public Garbage uploadGarbage(Garbage garbage) {
Date date = new Date();
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
garbage.setUploadDate(dateFormat.format(date));
em.persist(garbage);
return garbage;
}
}
Почему данные не добавляются в базу данных?
-------------------------------------------ОБНОВИТЬ----------------------------------------
private UploadedFile uploadedFile;
public void handleFileUpload(FileUploadEvent event) {
System.out.println("INSIDE THE METHOD!!!!");
uploadedFile = event.getFile();
String fileName = FilenameUtils.getName(uploadedFile.getFileName());
String contentType = uploadedFile.getContentType();
byte[] bytes = uploadedFile.getContents();
// Now you can save bytes in DB (and also content type?)
Garbage garbage = new Garbage();
garbage.setFilename(fileName);
garbage.setFile(bytes);
garbage.setDescription("info about the file");
garbage.setFileType("File extension");
fileUploaderEJB.uploadGarbage(garbage);
FacesContext.getCurrentInstance().addMessage(
null,
new FacesMessage(String.format(
"File '%s' of type '%s' successfully uploaded!",
fileName, contentType)));
}
Вот мой web.xml:
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<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>/pages/*</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>pages/index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>Resource Servlet</servlet-name>
<servlet-class>org.primefaces.resource.ResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Resource Servlet</servlet-name>
<url-pattern>/primefaces_resource/*</url-pattern>
</servlet-mapping>
</web-app>