Ich benutze <ui:repeat>
für die Anzeige einer Liste. Jetzt möchte ich die gesamte Liste in die CSV-Datei exportieren. Gibt es eine Möglichkeit, dies in JSF 2.0 zu tun?Export ui: Liste als CSV-Datei wiederholen
1
A
Antwort
2
Ja, es gibt einen Weg. Fügen Sie eine Befehlsschaltfläche hinzu, die "export" sagt.
<h:form>
<h:commandButton value="export" action="#{bean.export}" />
</h:form>
Dann wird in den export()
Verfahren iterieren die List<Something>
, die Sie dort in den <ui:repeat>
sind die Anzeige und jede Zeile/Spalte in gültigem CSV-Format drucken. Die CSV-Format Regeln sind sehr einfach, es gibt nur 3:
- Felder sind durch ein Komma getrennt.
- Wenn in einem Feld ein Komma vorkommt, muss das Feld in doppelte Anführungszeichen gesetzt werden.
- Wenn innerhalb eines Felds ein doppeltes Anführungszeichen auftritt, muss das Feld in Anführungszeichen gesetzt werden, und das doppelte Anführungszeichen innerhalb des Feldes muss durch ein weiteres Anführungszeichen ersetzt werden.
So wird es in etwa so aussehen:
public void export() throws IOException {
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
String filename = "somename.csv";
ec.responseReset();
ec.setResponseContentType("text/csv");
ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Writer writer = ec.getResponseOutputWriter();
for (Something something : somethings) { // somethings is your List<Something>
writer.append(toCsvField(something.getFoo()))
.append(',')
.append(toCsvField(something.getBar()))
.append(',');
.append(toCsvField(something.getBaz()))
.append('\n');
}
fc.responseComplete(); // Important! Otherwise JSF will perform navigation.
}
public static String toCsvField(Object value) {
if (value == null) {
return "";
}
String field = String.valueOf(value).replace("\"", "\"\"");
if (field.indexOf(',') > -1 || field.indexOf('"') > -1) {
field = '"' + field + '"';
}
return field;
}
Verwandte Themen
- 1. Eine Liste in Scala wiederholen
- 2. django Admin - Export als csv
- 3. selectBooleanCheckbox in einer DataTable in ui: wiederholen
- 4. Instagram API-Follower-Liste Export
- 5. Angular ui-grid externe Export Tasten
- 6. Export sqljdbc4 als OSGi-Dienst
- 7. Licode Export Frames als JPG
- 8. android benutzerdefinierte Liste Adapter wiederholen alte Artikel
- 9. RDLC-Export zu Excel-Funktionalität in der UI
- 10. Wiederholen von CSS Bild als Inhalt
- 11. So wiederholen Sie das Hintergrundbild als Block
- 12. Export Liste der Pandas Dataframes in Python
- 13. Komponenten sind mit der gleichen ID in ui: wiederholen
- 14. Export von PHP zu CSV als Stream
- 15. Es6-Modul Standard-Export als undefined importieren
- 16. MySQL Export Abfrage als Einfügen Anweisungen
- 17. Export google map Heatmap-Schicht als PDF
- 18. angularjs create/export html Ansicht als pdf
- 19. Export Abfrage Ergebnis als CSV durch PHP
- 20. Export Derby db als SQL-Datei
- 21. Ignite UI-Export in Excel-Tabelle mit Multi-Spalten-Header
- 22. AngularJS ui-grid Alle Rasterdaten für den Export erhalten
- 23. AngularJS UI-Raster PDF-Export - Lange Textüberläufe in angrenzende Spalte
- 24. Dynamische UI: in ui einschließen: wiederholen. Gibt es eine einfache Lösung?
- 25. Angularjs - erkennen, wenn ng-wiederholen innerhalb ng-wiederholen Ende wiederholen
- 26. Wie erstellt man eine Liste (Material-Ui) programmatisch?
- 27. Convert ui-Select-Werte-Liste integar ausgewählt
- 28. jquery ui Dialogfeld als bestätigen
- 29. Customize Website UI als Benutzer
- 30. Typescript Export vs. Standard Export
Vielen Dank BalusC – user1166528