如何在Camel Bindy的模型类中为boolean字段设置默认值

时间:2014-08-18 15:17:06

标签: java csv apache-camel bindy

我使用Bindy将csv文件数据映射到给定的模型类。除了布尔字段的默认值之外,整个过程工作正常。此字段不是csv文件的一部分,但在模型类中必须用于进一步的处理。我已将默认值设置为true,但这将是"忽略" ,如果我运行骆驼,该字段当前始终设置为false路由。

这是我的模型类的片段:

@CsvRecord(separator = " ", skipFirstLine = false)
public class MyModel {

  // ... more data fields

  @DataField(pos = 8, defaultValue = "true")
  public boolean approved;

defaultValue需要字符串值,因此我无法将其设置为Boolean.TRUE。我已经尝试了其他值,例如&#34; TRUE&#34; &#34;是&#34; &#34; y&#34; < / em>和&#34; 1&#34; 没有运气。

BindyCsvFactory的来源说类格式用于设置默认值,但它似乎无法处理布尔字段并使用默认值boolean代替是false

区域设置目前使用此命令设置为&#34; en_Us&#34;

BindyCsvDataFormat format = new BindyCsvDataFormat("[model package]");
format.setLocale("en_US");

所以主要问题是:如何在Bindy托管模型类中将布尔字段的默认值设置为true

1 个答案:

答案 0 :(得分:3)

你不能。如果您查看FormatFactory代码(http://camel.apache.org/maven/camel-2.11.0/camel-bindy/apidocs/src-html/org/apache/camel/dataformat/bindy/FormatFactory.html),您会发现它不支持布尔值。

看起来你的选择是

  • 删除@DataField注释,然后使用初始化布尔值 public boolean approved = true。将批准的字段添加到输入文件后,您必须稍后将其添加回来。
  • 以字符串或整数形式读取列,并在代码中转换为布尔值。