繁体   English   中英

在JAXB中设置默认值

[英]Set default value in JAXB

我有一个如下的xml文件,当filePath2为null或为空时,我希望该值等于filePath1的值。 有没有一种方法可以通过JAXB实现这一目标。

<file filePath1="C:/filePath">
   <subFile name="Test">
      <filePath2></filePath2>   
   </subFile>
<file/>

我不想硬编码默认值。 如果filePath2的值为null或blank(“”),我想将filePath1属性设置为'String filePath'的值。 有没有办法通过JAXB中的设置器来做到这一点?

使用纯Oracle JAXB,我只能看到使用javax.xml.bind.Unmarshaller.Listener来实现的可能性。 在模型类中实现该接口,并在afterUnmarshal(..)方法中执行必要的检查。

在那里,您可以访问filePath1的值并将其设置(如果需要)为filePath2

感谢您的所有意见,最后我选择了一个更简单的解决方案。 更新在setPath中被调用的setter。 JAXB部分-

String filePath2;
@XmlElement(required = true)
public void setFilePath2(final String file) {
    this.filePath2= file;
}

使用filePath的地方-

if (filePath2 == null || filePath2.isEmpty()) {
   setFilePath2(getFilePath1());
}

如果您遇到更好但更简单的解决方案,请告诉我。

如果可以使用注释,那么应该可以解决问题

...
private String foo;

@XmlElement(defaultValue="bar")
public String getFoo() {
    return foo;
}
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM