我是Smooks的新手,我希望实现以下目标。可能是我对这个全新,我还没有看到答案,但这应该是一个基本的东西。
我正在摘自beanpopulator官方文档中显示的示例。
http://www.milyn.org/javadoc/v1.0/smooks-cartridges/javabean/org/milyn/javabean/BeanPopulator.html
public class Header {
private Date date;
private Long customerNumber;
private String customerName;
}
对应的smooks配置
<-- Create the Header bean instance when we encounter the "header" element.
Call it "header" -->
<resource-config selector="header">
<resource>org.milyn.javabean.BeanPopulator</resource>
<param name="beanId">header</param>
<param name="beanClass">org.milyn.javabean.Header</param>
<param name="bindings">
<-- Header bindings... -->
<binding property="date" type="OrderDateLong" selector="header/date" /> <-- See OrderDateLong decoder definition below... -->
<binding property="customerNumber" type="Long" selector="header/customer/@number" />
<binding property="customerName" selector="header/customer" /> <-- Type defaults to String -->
</param>
</resource-config>
假设不需要从'selecter'中检索字段'customerName',而是每次都应该使用唯一值填充它。 (例如:customerName ='Richard')
我如何实现这一目标?谢谢!
编辑:如果这看起来很傻。 我想要做的是为地图排序添加一个值。我为此读取了一个CSV,如果CSV包含某个标题(例如:customerName),我将其添加到地图中,并将密钥设置为“customerName”。从CSV中读取标题是我的另一件事,但我也找不到解决方案。
答案 0 :(得分:0)
我通过编写一个新的Decoder类来解决这个问题。不确定这是否是最好的方式,但看起来像它的方式;)
public class NameStringDecoder implements DataDecoder {
@Override
public Object decode(String customerName) throws DataDecodeException {
return "Richard";
}
}