hx:commandExButton DAtei erstellen und dem User zum Download

Status
Nicht offen für weitere Antworten.

TRunKX

Bekanntes Mitglied
Hallo Leute,

habe eine Grundsatzfrage:

Ich versuche folgendes und komme nicht weiter:

Code:
<hx:commandExButton type="submit" action="#{gencadAdminActivity.doActionExportUserList}" title="Exportieren" value="Exportieren" id="export" styleClass="commandExButton"></hx:commandExButton>

Nachdem der button in der GUI gedrückt wurde erstellt der Server eine Datei mit eienr Liste :

Code:
public String doActionExportUserList()
	{

		int g=0;
		File f = new File ("s");
		Writer fw = null;
		
		try { 
			fw = new FileWriter( f.createTempFile("List",".csv"));
			setFilename(f.getAbsolutePath());
			fw.write("User Liste des Repositorys: \n");
			while (g!=repositoryUsers.size())
			{
				fw.write (((RepositoryUser)repositoryUsers.get(g)).getName()+" \n");
				g++;
			}
			} catch ( IOException e ) 
			{ 
				System.err.println( "Konnte Datei nicht erstellen" );
				} 
			finally 
			{ 
				if ( fw != null ) 
					try { fw.close();
					} catch ( IOException e ) 
					{ 	
					} 
					}
		
		
		
		return GenCADKonstanten.EXPORT_USER_LIST;
	}

Nun will ich aber eigentlich das der User die gerade erstellte Datei direkt Downloaden kann ohne das ein weiterer Klick Notwendig ist.

Jemand ne Idee wie das zu handlen ist? Ich mache mich da jetzt seit 3 Stunden kaputt und weiß nichtmal wo ich anfangen soll.

Bin für jede hilfe dankbar.
 
Erstmal Danke für die Antwort!

Ich werde das noch heute ausprobieren und dann gegebenenfalls den Thread als gelöst markieren.

Ich danke für die schnelle Antwort und schäme mich das ich das nicht schon selbst gefunden habe.
 
Hmm also wenn ich immer weiß wo die Datei liegt dann geht das ja super.

Aber in meinem Fall habe ich doch folgendes gemacht:

Code:
fw = new FileWriter( f.createTempFile("List",".csv"));

Nur bekomme ich jetzt von

f weder Pfad noch dateiname geliefert. Kann mir jemand sagen warum bzw. wie ich beide Infos bekomme.

Das wichtige an dem Programm ist das ers derzeit in einem lokalen TestEnvironment löuft und später auf einen WebSphere Application Server kommt. Also ist arbeiten mit absoluten Pfaden einfach nicht drin.
 
Nur bekomme ich jetzt von

f weder Pfad noch dateiname geliefert. Kann mir jemand sagen warum bzw. wie ich beide Infos bekomme.
Brauchst du das denn wikrlich?
FileINputStream nimm auch ein bestehendes File objekt, Pfad und Name sind dann nicht mehr wichtig.

Das wichtige an dem Programm ist das ers derzeit in einem lokalen TestEnvironment löuft und später auf einen WebSphere Application Server kommt. Also ist arbeiten mit absoluten Pfaden einfach nicht drin.
Ich empfehle Tests auf dem Webspehere, willst ja später keine Überraschungen erleben.
 
Ist das nicht eine klassische Anwendung für ein Servlet? Vorteilhaft ist auch, dass man direkt schreiben kann, und nicht extra ein File erstellen muss.
 
Habs geschafft es geht. Habe einfach ne normale Datei gemacht. Da habe ich die angaben geht in beiden Welten.
 
Ist das nicht eine klassische Anwendung für ein Servlet?
Wenn man kein JSF nutzt, dann ja 😉

Vorteilhaft ist auch, dass man direkt schreiben kann, und nicht extra ein File erstellen muss.
Braucht man bei dieser Lösung mit JSF auch nicht.

Genaugenommen macht die Action der ManagedBean nix anderes als das Servlet, HttpSerlvetResponse holen und Daten durchschieben, kein Unterschied.

Sieh dir mal den Code unter dem Link an 😉

Aber ein Servlet an JSF zu gewöhnen ist nicht so elegant umzusetzen imho.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben