@XmlAccessorType(XmlAccessType.NONE)
@XmlType(name = "")
@XmlRootElement(name = "request")
public class Request {
private Integer intTag;
@XmlElement(required = true, name = "intTag", nillable = true)
public Integer getIntTag () {
return intTag;
}
@XmlElement(required = true, name = "intTag", nillable = true)
public void setIntTag (String intTag) {
if (StringUtils.isBlank(intTag)) {
this.intTag = null;
} else {
this.intTag = Integer.parseInt(intTag);
}
}
public void setIntTag (Integer intTag) {
this.intTag = intTag;
}
}
我注释了setIntTag(String),但Jaxb marchaller调用setIntTag(Integer)并将Integer传递给它,如果我删除setIntTag(Integer),marchaller调用字符串setter。
如何注释这些方法以保留两个setter,并告诉编组程序使用字符串setter?
我相信这是一种意料之中的行为。
JAXB将根据Java Beans约定处理这两种方法
T getXxx();
void setXxx(T xxx);
如果要将none nil but empty
字符串作为nil
,可以创建XMLAdapter
。
@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "request")
public class Request {
private static class EmtpyStringAdapter
extends XmlAdapter<String, Integer> {
@Override
public Integer unmarshal(final String value) throws Exception {
if (value == null || value.isEmpty()) {
return null;
}
return Integer.valueOf(value);
}
@Override
public String marshal(final Integer bound) throws Exception {
if (bound == null) {
return null;
}
return bound.toString();
}
}
public static void main(final String[] args) throws JAXBException {
final JAXBContext context = JAXBContext.newInstance(Request.class);
{
final Request request1 = new Request();
request1.setIntTag(0);
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
final Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
marshaller.marshal(request1, System.out);
marshaller.marshal(request1, buffer);
final Unmarshaller unamrshaller = context.createUnmarshaller();
final Request request2 = (Request) unamrshaller.unmarshal(
new ByteArrayInputStream(buffer.toByteArray()));
System.out.println(request2.getIntTag());
}
{
final Request request1 = new Request();
request1.setIntTag(null);
final ByteArrayOutputStream buffer = new ByteArrayOutputStream();
final Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
marshaller.marshal(request1, System.out);
marshaller.marshal(request1, buffer);
final Unmarshaller unamrshaller = context.createUnmarshaller();
final Request request2 = (Request) unamrshaller.unmarshal(
new ByteArrayInputStream(buffer.toByteArray()));
System.out.println(request2.getIntTag());
}
{
final String xml = "<request><intTag></intTag></request>";
final Unmarshaller unamrshaller = context.createUnmarshaller();
final Request request2 =
(Request) unamrshaller.unmarshal(new StringReader(xml));
System.out.println(request2.getIntTag());
}
}
@XmlElement(nillable = true, required = true)
@XmlJavaTypeAdapter(EmtpyStringAdapter.class)
public Integer getIntTag() {
return intTag;
}
public void setIntTag(Integer intTag) {
this.intTag = intTag;
}
private Integer intTag;
}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<request>
<intTag>0</intTag>
</request>
0
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<request>
<intTag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>
</request>
null
<request><intTag></intTag></request>
null
但是如果我让Spring Boot自动配置JOOQ,那么我应该把这个设置放在哪里呢? 基本的Spring Boot配置似乎只支持在中设置,如jooq-spring-boot-example所示。 我尝试将放入中,但这对SQL没有任何影响。 有没有办法自定义Spring boot JOOQ配置,而不必自己配置JOOQ? 我使用的是SpringBoot 2.1.7.Release和JOOQ 3.11.
Highcharts 是通过 JavaScript 对象的形式(JSON)来定义图表的配置参数。 一、图表配置对象 当使用图表构造函数 Highcharts.Chart 来初始化图表时,图表的配置对象是以第二个参数传递给该构造函数的。 下面是示例代码(其中红色部分是配置对象): var options = { chart: { type: 'bar' },
Settings(配置设置) 是影响FreeMarker行为的已被命名的值。配置设置有很多, 例如:locale,number_format, default_encoding, template_exception_handler。可以参考 Configuration.setSetting(...)的Java API 文档 来查看配置设置的完整列表。 配置设置存储在 Configuration
问题内容: 获得了一组对时区敏感的玩笑测试。我们通常使用npm脚本运行它们: 将TZ设置为utc时,我可以在快照中获得如下所示的值: 没有它,我得到: 有没有一种方法可以在我的jest配置中进行设置,这样我就可以在命令行中运行而不必通过NPM脚本了?配置文档中没有关于此的任何内容。 我尝试将这两个添加到我的jest.config.js中。没有人起作用: 当然,解决这个问题似乎微不足道,但是令我惊讶
在AWS认知用户池中,我们需要设置SMS配置: http://docs.aws.amazon.com/cognito-user-identity-pools/latest/apireference/api_smsconfigurationtype.html 什么是SMSCallerARN和ExternalID?如何配置它们?
我有两个片段:(1)图书馆片段,(2)书片段 图书馆碎片通过RecyclerView显示所有可用的书籍。用户可以在每个RecyclerView项目上设置标签,这将把LiveData设置为相应的图书。同时,书籍片段将被打开,并显示该书的内容。 我在ViewHolder类中设置了一个onClickListener,它位于图书馆片段的RecyclerView. Adapter中。因此,当单击一个项目时,