Java 在JAXB中设置默认值

Java 在JAXB中设置默认值,java,xml,jaxb,Java,Xml,Jaxb,我有一个如下所示的xml文件,当filePath2为null或空时,我希望该文件的值为filePath1的值。有没有一种方法可以通过JAXB实现这一点 <file filePath1="C:/filePath"> <subFile name="Test"> <filePath2></filePath2> </subFile> <file/> 我不想硬编码默认值。如果filePath2的值为

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

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


我不想硬编码默认值。如果filePath2的值为null或空白(“”),我希望将filePath1属性设置为“String filePath”的值。有没有一种方法可以通过JAXB中的setter实现呢?

如果您可以使用注释,那么这应该可以实现

...
private String foo;

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

使用普通的oraclejaxb,我只看到使用。 在模型类中实现该接口,并在
afterUnmarshal(..)
方法中执行必要的检查


在那里,您可以访问
文件路径1
的值,并将其设置为
文件路径2
,感谢您的所有输入,最后我选择了一个更简单的解决方案;更新调用filePath2的setter。 JAXB部分-

String filePath2;
@XmlElement(required = true)
public void setFilePath2(final String file) {
    this.filePath2= file;
}
使用文件路径的位置-

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

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

这将把默认值硬连接到
“bar”
。它不会动态读取
。/../@filePath1