Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 来自模式的Jaxb类以大写形式生成getter setter方法_Java_Xml_Web Services_Xsd_Jaxb - Fatal编程技术网

Java 来自模式的Jaxb类以大写形式生成getter setter方法

Java 来自模式的Jaxb类以大写形式生成getter setter方法,java,xml,web-services,xsd,jaxb,Java,Xml,Web Services,Xsd,Jaxb,我正在使用JAX-WS生成一个自顶向下的web服务。在wsdl中,我导入了一个包含所有必要元素的xsd。我需要在soap请求中以大写形式显示所有xml节点,因此我将xsd中的元素名称保留为大写。但是,当从wsdl生成类时,我能够看到getter和setter方法也是以大写字母命名的,而不是变量。例如,如果我在xsd中使用'SOURCE'作为元素,我将得到相应的getter方法'getSOURCE',而不是常规的'getSOURCE'。我试图从模式中生成jaxb类,并保持xsd的独立性,但未能获得

我正在使用JAX-WS生成一个自顶向下的web服务。在wsdl中,我导入了一个包含所有必要元素的xsd。我需要在soap请求中以大写形式显示所有xml节点,因此我将xsd中的元素名称保留为大写。但是,当从wsdl生成类时,我能够看到getter和setter方法也是以大写字母命名的,而不是变量。例如,如果我在xsd中使用'SOURCE'作为元素,我将得到相应的getter方法'getSOURCE',而不是常规的'getSOURCE'。我试图从模式中生成jaxb类,并保持xsd的独立性,但未能获得预期的命名约定

下面是使用的模式的一部分

<xs:complexType name="Data">
<xs:sequence>
  <xs:element name="SEQ" type="xs:int"/>
  <xs:element name="INDEX" type="xs:string"/>
  <xs:element name="VALUE" type="xs:string"/>
</xs:sequence>

这里setter方法被生成为setSEQ,我需要像“setSEQ”这样的驼峰格式。

这是预期的行为。底层的
xjc
调用遵守javabean约定:如果属性名称的前两个字母是大写的,则get和set方法不应用大写或去大写

您可以在JAXB外部绑定文件中指定自己的重写方法绑定,该文件是一个XML文件,按照惯例具有
.xjb
扩展名。其格式见本手册第7章:


这是预期的行为。底层的
xjc
调用遵守javabean约定:如果属性名称的前两个字母是大写的,则get和set方法不应用大写或去大写

您可以在JAXB外部绑定文件中指定自己的重写方法绑定,该文件是一个XML文件,按照惯例具有
.xjb
扩展名。其格式见本手册第7章:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Data", propOrder = {
    "seq",
    "index",
    "value"
})
public class Data {

@XmlElement(name = "SEQ")
protected int seq;
@XmlElement(name = "INDEX", required = true)
protected String index;
@XmlElement(name = "VALUE", required = true)
protected String value;

public int getSEQ() {
    return seq;
}

public void setSEQ(int value) {
    this.seq = value;
}

public String getINDEX() {
    return index;
}

public void setINDEX(String value) {
    this.index = value;
}

public String getVALUE() {
    return value;
}

public void setVALUE(String value) {
    this.value = value;
}

}
<?xml version="1.0" encoding="UTF-8"?>
<jaxb:bindings version="2.0"
               xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
               xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <jaxb:bindings schemaLocation="data.xsd">

        <jaxb:bindings node="//xs:complexType[@name='Data']">
            <jaxb:bindings node=".//xs:element[@name='SEQ']">
                <jaxb:property name="seq"/>
            </jaxb:bindings>
            <jaxb:bindings node=".//xs:element[@name='INDEX']">
                <jaxb:property name="index"/>
            </jaxb:bindings>
            <jaxb:bindings node=".//xs:element[@name='VALUE']">
                <jaxb:property name="value"/>
            </jaxb:bindings>
        </jaxb:bindings>

    </jaxb:bindings>

</jaxb:bindings>
wsimport -d build/generated-classes -p com.example.myapp.data -b custom.xjb http://www.example.com/data-service.wsdl