2012-09-04 44 views
1

我的一个集成客户端提供具有属性名称“_1”,“_2”...等的XML 使用JAXB生成类使用getter方法访问数字属性的表达式

<element _1="attr1" _2="attr2"> 

,属性的getter方法将GET1()和get2()

但是在我的JSP页面,使用JSTL和EL,确保我无法访问值通过

${variable.1} 

如何正确使用EL访问值?

+0

你试图访问通过'variable.1'价值? – sp00m

+0

当然,JSP不会编译错误$ {variable.1}包含无效表达式: – Ivan

回答

0

使用这个符号:

${variable.["1"]} 
1

你可以使用一个外部绑定文件重命名的属性生成的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 

部件1

下面是生成的类将是什么样子:

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; 
    } 

}