如何从java.time.LocalDate的java bean生成XSD?

时间:2017-07-20 10:16:34

标签: java xml maven jaxb

我正在尝试使用jaxb2-maven-plugin从java bean生成xsd

但我经常遇到以下错误:

java.time.LocalDate is a non-static inner class, and JAXB can't handle those.
    this problem is related to the following location:
        at java.time.LocalDate (Unknown Source)

豆子就像:

public class MyBean {
    private LocalDate date;
}

因此,我创建了一个jaxb映射文件和一个在java.time.LocalDatexs:date之间转换的适配器。但错误仍然保持不变。

 public class LocalDateAdapter {
    private static DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyyMMdd");

    public static LocalDate unmarshal(String v) throws Exception {
        return fmt.parseLocalDate(v);
    }

    public static String marshal(LocalDate v) throws Exception {
        return v.toString("yyyyMMdd");
    }
 }

的src /主/资源/ xsdbindings.xml:

<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb"
          xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
          xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
          xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
          version="2.1">
    <globalBindings>
        <javaType name="java.time.LocalDate" xmlType="xs:date"
                  parseMethod="my.path.LocalDateAdapter.unmarshal"
                  printMethod="my.path.LocalDateAdapter.marshal"
        />
    </globalBindings>
</bindings>

maven pom.xml

...
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jaxb2-maven-plugin</artifactId>
                <version>2.3.1</version>
                <executions>
                    <execution>
                        <id>schemagen</id>
                        <goals>
                            <goal>schemagen</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <bindingFiles>xsdbindings.jaxb</bindingFiles>
                    <verbose>true</verbose>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

0 个答案:

没有答案