我有一个类Vo,它包含byte []类型的成员。现在我想把这个类的整个对象数据写到一个文件中,并使用下面配置的smooks API:
smookConfig.xml:
<ftl:template><!--<#list objectVo.arrayOfBytes as oneByte> ${oneByte}</#list>--> </ftl:template>
现在在创建对象并填充所有数据并使用smooks API将其导出到文件后,当我在二进制阅读器中打开文件时,我可以看到字节被转换为它们的ASCI代码,所以如果字节是0x00 in VO然后当我打开文件时,我会发现它是0x30,这是charcter 0的ASCI代码。 我想知道smooks中是否有任何方法可以在没有任何转换的情况下导出字节数据,这样它就可以像java OutputStream.write(byte [])那样打印二进制数据而不进行任何转换。
问候,
答案 0 :(得分:0)
问题是,FreeMarker是一个文本模板引擎。它的输出进入Writer
,而不是直接进入OutputStream
。当然,如果您知道输出字符集是什么,并且它不是UTF-something或其他多字节字符集,那么您可以作弊...而对于作弊,您必须编写自定义指令(TemplateDirectiveModel
)或只需调用一个返回String
的Java方法(我不知道Smooks是否允许您公开一些普通的Java对象)。