admin管理员组文章数量:1278883
@Override
public void configure(){
rest("/camel/loss-events")
.get("/csv-download")
.to("direct:generateCsv");
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter(getCsvParameterDelimiter().charAt(0));
from("direct:generateCsv")
.process(exchange -> {
List<LossEvent> lossEventList= Optional.ofNullable(bean.getLossEventEList()).orElse(Collections.emptyList());
List<String[]> csvData = new ArrayList<>();
csvData.add(getHeaders());
csvData.addAll(convertLossEventsToCsvRows(lossEventList));
exchange.setProperty("csvData", csvData);
exchange.getIn().setBody(csvData);
})
.marshal().csv()
.setHeader("Content-Type", constant("text/csv; charset=UTF-8"))
.setHeader("Content-Disposition", constant("attachment; filename=Loss_Events.csv"))
.to("stream:out");
}
I tried to generate the csv file based on a certain delimiter that i retrieve from my database. I debugged and the csvParameterDelimiter() retrieves a semicolon ';' of char type which is what i want. When i marshal it seems that the default attributes of CsvDataFormat are set instead of the ones i am trying to set.
@Override
public void configure(){
rest("/camel/loss-events")
.get("/csv-download")
.to("direct:generateCsv");
CsvDataFormat csv = new CsvDataFormat();
csv.setDelimiter(getCsvParameterDelimiter().charAt(0));
from("direct:generateCsv")
.process(exchange -> {
List<LossEvent> lossEventList= Optional.ofNullable(bean.getLossEventEList()).orElse(Collections.emptyList());
List<String[]> csvData = new ArrayList<>();
csvData.add(getHeaders());
csvData.addAll(convertLossEventsToCsvRows(lossEventList));
exchange.setProperty("csvData", csvData);
exchange.getIn().setBody(csvData);
})
.marshal().csv()
.setHeader("Content-Type", constant("text/csv; charset=UTF-8"))
.setHeader("Content-Disposition", constant("attachment; filename=Loss_Events.csv"))
.to("stream:out");
}
I tried to generate the csv file based on a certain delimiter that i retrieve from my database. I debugged and the csvParameterDelimiter() retrieves a semicolon ';' of char type which is what i want. When i marshal it seems that the default attributes of CsvDataFormat are set instead of the ones i am trying to set.
Share Improve this question asked Feb 24 at 10:01 user28803304user28803304 11 Answer
Reset to default 0Looking at your method calls, I think you are not passing in your csv object with the correct delimeter being set to the marshall call. Take a look at
...
.marshal().csv(). // this is very well creating a new default instance
...
This should be changed to something like
...
marshal(csv). # the name of your CSVDataFormat instance
...
so that the marshaller uses your csv instance
本文标签:
版权声明:本文标题:java - So i am trying to generate a csv file based on a list that i retrieve from my database. Everything seems to work fine exc 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1741280155a2369961.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论