Class Foo:
@Entity
@Table(name = "FOO")
@XmlRootElement(name = "doo")
@XmlAccessorType(XmlAccessType.FIELD)
public class Fooimplements Serializable {
@Column(name = "SOME_FIELD")
private String someField;
如果someField是" abc",则封送的XML看起来像
<foo>
<someField>abc</someField>
有没有办法注释前后转换,以便只为XML编组目的,Java值&#34; abc&#34;转换为&#34; xyz.abc&#34; (通过将&#34; xyz。&#34;连接到字符串的开头)并且当XML被解组时,值&#34; xyz.abc&#34;被转换为&#34; abc&#34;删除前4个字符?如果重要,我正在使用CXF
。
答案 0 :(得分:1)
可以使用XmlAdapter
:
public class CustomAdapter extends XmlAdapter<String, String>{
@Override
public String marshal(String v) throws Exception {
return "xyz." + v;
}
@Override
public String unmarshal(String v) throws Exception {
return v.replaceFirst("^xyz.", "");
}
}
并使用如下:
@XmlAccessorType(XmlAccessType.FIELD)
public class Foo implements Serializable {
@XmlJavaTypeAdapter(CustomAdapter.class)
private String someField;
...
}
或者,您可以为此目的使用getter和setter。