Download Was ich versuche zu tun:Automatische Leerzeichen einfügen während Struts2
auf dem Server generieren eine txt-Datei und laden Sie es auf der Client-Seite. Ich Streben 2 verwenden, sind hier die Codeteile:
AwesomeAction.java
InputStream fileInputStream;
public InputStream getFileInputStream(){
return fileInputStream;
}
public String execute() {
res = "toto";
fileInputStream = new StringInputStream(res);
return SUCCESS;
}
struts.xml
<action name="awesomeAction" class="pathtomyawesomeaction">
<result name="success" type="stream">
<param name="contentType">text/plain</param>
<param name="inputName">fileInputStream</param>
<param name="contentDisposition">attachment;filename="id_opp.txt"</param>
<param name="bufferSize">1024</param>
</result>
<result name="error" type="redirect">/erreur.do</result>
</action>
Was nicht funktioniert:
Wenn ich klicke Auf dem Link, der die Aktion auslöst, wird tatsächlich eine Datei mit dem Namen "id_opp.txt" heruntergeladen, die den gesamten Text ("toto") enthält, aber vor jedem Zeichen einen Leerraum hinzufügt.
"t o t o"
Mit Server debuggt, ich bin sicher, dass mein Variable "toto" Server-Seite enthält, also muss es eine Config sein, die ich vermisse ...
Jede Idee?
Verwendung des Imports org.hsqldb.lib.StringInputStream; Für den InputStream, da der String in dieser Klasse gebaut wird, kann ich keinen FileInputStream oder irgendetwas verwenden, mir ist keine andere Möglichkeit bekannt, dies zu tun?
auf der Codierung überprüfen, wird aktualisiert, sobald ich
gelöst dank Thomas einige Ergebnisse erhielt:
Mit der StringInputStream die Wurzel des Problems war, sondern schaltete es auf: fileInputStream = neuer ByteArrayInputStream (res.getBytes (StandardCharsets.UTF_8));
, die eine input für die „res“ Variable bauen, mit der eigentlichen Codierung etc ...
Es könnte ein Codierungsproblem sein, da Sie keine zur Verfügung gestellt haben. Abgesehen davon, welche 'StringInputStream' Klasse benutzt du? AFAIK es ist keine der Struts 2 Core-Bibliotheken und keine JDK-Klasse. Und ist dein Beispiel korrekt? Sie übergeben das "t" in Kleinbuchstaben, aber in Großbuchstaben? – Thomas
Ich werde die Frage mit diesen Details bearbeiten, so dass jeder sie auch sehen kann! –
@Thomas der Großbuchstabe T war ein Tippfehler, mein Schlechter. Versuchen Sie, dies mit einem ByteArrayInputStream zu lösen, der wie ein besserer Weg erscheint, um meinen InputStream zu erstellen, werde ich Sie in einer Minute auf dem Laufenden halten –