統合するクライアントの1つは、属性名「_1」、「_2」などのXMLを提供します。例:
<element _1="attr1" _2="attr2">
JAXBを使用してクラスを生成する場合、属性のgetterメソッドはget1()およびget2()になります。
ただし、私のJSPページでは、JSTLとELを使用して、値にアクセスできないことを確認してください。
${variable.1}
ELを使用して値に正しくアクセスするにはどうすればよいですか?
統合するクライアントの1つは、属性名「_1」、「_2」などのXMLを提供します。例:
<element _1="attr1" _2="attr2">
JAXBを使用してクラスを生成する場合、属性のgetterメソッドはget1()およびget2()になります。
ただし、私のJSPページでは、JSTLとELを使用して、値にアクセスできないことを確認してください。
${variable.1}
ELを使用して値に正しくアクセスするにはどうすればよいですか?
外部バインディングファイルを使用して、JAXBによって生成されたプロパティの名前を変更できます。
schema.xsd
以下は、投稿に基づくサンプルXMLスキーマです。
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org"
xmlns:tns="http://www.example.org"
elementFormDefault="qualified">
<element name="element1">
<complexType>
<attribute name="_1" type="string" />
<attribute name="_2" type="string" />
</complexType>
</element>
</schema>
binding.xml
外部バインディングファイルは、XMLスキーマからJavaクラスを生成する方法をカスタマイズするために使用されます。以下では、外部バインディングファイルを使用して、生成されたプロパティの名前を変更します。
<jaxb:bindings
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
version="2.1">
<jaxb:bindings schemaLocation="schema.xsd">
<jaxb:bindings node="//xsd:attribute[@name='_1']">
<jaxb:property name="one"/>
</jaxb:bindings>
<jaxb:bindings node="//xsd:attribute[@name='_2']">
<jaxb:property name="two"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
XJCコール
以下は、XJCツールを使用するときにバインディングファイルを参照する方法の例です。
xjc -b binding.xml schema.xsd
Element1
生成されたクラスは次のようになります。
package forum12259754;
import javax.xml.bind.annotation.*;
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "element1")
public class Element1 {
@XmlAttribute(name = "_1")
protected String one;
@XmlAttribute(name = "_2")
protected String two;
public String getOne() {
return one;
}
public void setOne(String value) {
this.one = value;
}
public String getTwo() {
return two;
}
public void setTwo(String value) {
this.two = value;
}
}
この表記を使用してください:
${variable.["1"]}