PrimeFaces (/ JSF) Konfigurationsproblem

Zireal

Mitglied
Guten Tag,

ich bin gerade neu hier angekommen und starte gleich mal mit meinem momentanen Problem. :)

Ich entwickle eine Webapplikation mit JSF und Tomcat (v6.0). Nun will ich dem Benutzer einer Administrationsfläche gestatten ein Bild hochzuladen und dieses anschliessend zuzuschneiden.

Für beides bietet PrimeFaces ideale Lösungen. (FileUpload / ImageCropper)

Nun versuche ich seit geraumer Zeit, PrimeFaces zu integrieren. Ich habe die aktuelle Version 2.1 eingebunden.

Nun, mein JSP für den FileUpload beinhaltet folgendes:
Java:
<h:form id="newarticleformular" prependId="false" enctype="multipart/form-data">
        <p:fileUpload id="upload" auto="true" fileUploadListener="#{fileUploadController.handleFileUpload}"  
                                          allowTypes="*.jpg;*.png;*.gif;" description="Images"/>
</h:form>

Dies klappt auch soweit so gut, das Problem ist jedoch, dass bei meinem FileUploadController kein Event ankommt.


FileUploadController
Java:
package ch.vote2buy.jsf.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;

import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;

public class FileUploadController {
private UploadedFile file;

public void handleFileUpload(FileUploadEvent event)
{
	System.out.println("FileUpload finished");
	file = event.getFile();
	ServletContext servletContext = (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext();
	String newFileName = servletContext.getRealPath("") + File.separator + "uploaded" + File.separator+ file.getFileName();
	FacesMessage msg = new FacesMessage("Succesful", event.getFile().getFileName() + " is uploaded.");
	FacesContext.getCurrentInstance().addMessage(null, msg);
	try {
		FileOutputStream fos = new FileOutputStream(new File(newFileName));
		InputStream is = file.getInputstream();
		int BUFFER_SIZE = 8192;
		byte[] buffer = new byte[BUFFER_SIZE];
		int a;
		while(true) {
			a = is.read(buffer);
			if(a < 0) break;
			fos.write(buffer, 0, a);
			fos.flush();
		}
		fos.close();
		is.close();
	} catch(IOException e) { }
}
}


Mein web.xml sieht folgendermassen aus:
[XML]<welcome-file-list>
<welcome-file>/index.jsf</welcome-file>
</welcome-file-list>

<!-- Primefaces -->
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>uploadDirectory</param-name>
<param-value>C:\Dokumente und Einstellungen\<User>\Desktop</param-value>
</init-param>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>51200</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<!-- Primefaces -->


<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>server</param-value>
</context-param>

<!--
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.jsf</param-value>
</context-param>
-->

<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>

<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</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>*.jsf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>


<!-- For Primefaces -->



<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>

<context-param>
<param-name>com.sun.faces.allowTextChildren</param-name>
<param-value>true</param-value>
</context-param>



<!-- For Primefaces -->



<!-- SECURITY MANAGEMENT -->
<security-role>
<description>Sicherheitsrolle für Administrationszugang</description>
<role-name>admin</role-name>
</security-role>
<security-constraint>
<display-name>Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/secure/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<realm-name>Form-based Authentication</realm-name>
<form-login-config>
<form-login-page>/secure/login.jsf</form-login-page>
<form-error-page>/secure/denied.html</form-error-page>
</form-login-config>
</login-config>


</web-app>[/XML]


Den faces-config.xml Eintrag bezüglich des UploadControllers:
Java:
<managed-bean> 
  		<managed-bean-name>fileUploadController</managed-bean-name> 
    	<managed-bean-class>ch.vote2buy.jsf.controller.FileUploadController</managed-bean-class> 
  		<managed-bean-scope>request</managed-bean-scope> 
  	</managed-bean>



Wenn ich ein File per FileChooser des PrimeFaces-Elements "fileUpload" auswähle, sollte der "auto="true"-Tag verantwortlich sein, dass das File sofort hochgeladen wird. Geschieht nichts, kein Fehler, keine Ausgabe des Controllers - einfach nichts. Deshalb vermute ich, dass etwas in meiner Konfiguration nicht in Ordnung ist. Da ich jedoch PrimeFaces das erste Mal benutze finde ich darin nichts, was mich stutzen lassen würde....

Habt ihr eine Idee, wo mein Problem liegen könnte?


=> Danach gehts weiter zum ImageCropper, der sollte das File wieder einlesen und zum zuschneiden anzeigen, das Bild (welches ich zum Testen mit absolutem Pfad angab) erscheint, jedoch kein Auswahlfeld - womit man das Bild zuschneiden könnte... *hüstel*



Nun, ich hoffe ihr könnt mir bei meinem FileUpload-"Problem" helfen...!


In freudiger Erwartung,
Zireal
 

Nogothrim

Aktives Mitglied
ich kenne mich mit primefaces im detail nicht genau aus, aber ich vermute mal dass Request nicht der richtige Scope für nen FileUpload ist, versuchs mal mit Session. Hört sich so an als ob er einfach alles vergisst, bevor irgendwas passiert.
 

Zireal

Mitglied
ich kenne mich mit primefaces im detail nicht genau aus, aber ich vermute mal dass Request nicht der richtige Scope für nen FileUpload ist, versuchs mal mit Session. Hört sich so an als ob er einfach alles vergisst, bevor irgendwas passiert.

Vielen Dank für deine Antwort!

Ich habe dies einmal ausprobiert, in der Theorie hört sich das eigentlich noch realistisch an, dass der Request gar nicht erst ankommt.

Folgende Änderung in der faces-config.xml:

Java:
<managed-bean> 
  		<managed-bean-name>fileUploadController</managed-bean-name> 
    	<managed-bean-class>ch.vote2buy.jsf.controller.FileUploadController</managed-bean-class> 
  		<managed-bean-scope>session</managed-bean-scope> 
</managed-bean>

Auch leider bewirkt diese Änderung des scopes keine Änderung, es geschieht nach wie vor nichts.
Es scheint einfach kein Event ausgelöst zu werden. Weshalb ist mir schleierhaft...

Keine Meldung - Kein Fehler - einfach nichts. Hm.


Oder meintest du einen anderen Scope?



Vielen Dank und Gruss,
Zireal
 

Semerzo

Aktives Mitglied
Hm, also wenn so gar nichts passiert, klingt das so als würde die Validierung scheitern. Hast Du ein h:messages tag auf der Seite?
 

Zireal

Mitglied
Merkwürdig. Auf der Seite befindet sich kein <h:messages> oder <h:message> Tag. Ich teste PrimeFaces vor dem produktiven Gebrauch auf einer ganz simpel aufgebauten JSP Seite. Die Seite dient momentan lediglich dem PrimeFaces-Test...

Trotzdem danke für den Gedankenanstoss... ansonsten niemand eine Idee?
Zireal
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
P JSF (Primefaces) SelectOneMenu Value auf Array wird nicht gesetzt Web Tier 0
M JSP PrimeFaces LayoutUnits <- breite lässt sich nicht erzwingen wenn 'center' Web Tier 0
T JSF Primefaces: selectedvalue von "selectmanyCheckbox" geht verloren Web Tier 0
W JSF Primefaces Selection Mode Web Tier 2
W JSF einfache DataTable PrimeFaces Web Tier 1
FINF_AW_Alex JSF PrimeFaces Dialog verlinken Web Tier 3
W JSF Primefaces Web Tier 5
F JSF Problem mit Primefaces Web Tier 7
F JSF Problem mit Primefaces Web Tier 4
S JQuery und Primefaces (Immer wieder Ärger damit) Web Tier 0
S Primefaces commandButton in einem Dialog/Form/PanelGrid führt actionListener nicht aus Web Tier 4
K JSON in Primefaces Table Web Tier 3
C JSF Zusammenarbeit Primefaces und Tomahawk. Web Tier 2
J JSF Grad der Barrierefreiheit von PrimeFaces, ICEFaces, RichFaces und OpenFaces Web Tier 2
P JSF Primefaces Picklist-Ersatz mit vielen Daten Web Tier 4
S primefaces picklist untereinander anordnen Web Tier 6
T JSF Primefaces beim öffnen eines p:dialog wird eine neue View ManagedBean erstellt Web Tier 2
M onNodeExpand listener in PrimeFaces Web Tier 4
F Primefaces Dialog Web Tier 7
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
F Primefaces Datatable => Inplaces Web Tier 3
F Primefaces Datatable Web Tier 6
F JSF Primefaces 3.3 treetable Web Tier 9
F PrimeFaces - selectOneMenu Web Tier 2
F PrimeFaces commandButton und actionListener Web Tier 6
F PrimeFaces p:selectOneMenu funktioniert nicht Web Tier 12
M JSF Dynamische Größe bei Primefaces Komponenten Web Tier 2
P PrimeFaces DataGrid Click "simulieren" Web Tier 5
J JSF2+primefaces? Web Tier 20
H JSF JSF 2.0 (Primefaces) commandLinks mit action="mypage.xhtml" ohne die URL im Browser zu ändern Web Tier 8
S JSF Primefaces Thema, Css wird geladen, nur die Bilder nicht, bzw Resource wird nicht aufgelöst Web Tier 5
F Primefaces Einstieg Web Tier 1
R Primefaces: No Library Found For This Namespace Web Tier 4
M Primefaces COmmandBUtton Web Tier 8
D JSF Ajax mit Facelets (PrimeFaces) Web Tier 4
Z Primefaces sieht grausam aus Web Tier 1
A [PrimeFaces] dataTable mit paginator Probleme Web Tier 2
G Konfigurationsproblem Eclipse/JSF Web Tier 0

Ähnliche Java Themen

Neue Themen


Oben