java - 使用 getter 方法表达式访问数字属性

标签 java jstl expression el

我要集成的客户之一提供了属性名称为“_1”、“_2”...等的 XML。 例如

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

使用JAXB生成类,属性的getter方法为get1()和get2()

但是在我的 JSP 页面中,使用 JSTL 和 EL,我肯定无法通过访问该值

${variable.1}

如何正确使用 EL 访问该值?

最佳答案

您可以使用外部绑定(bind)文件来重命名 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>

绑定(bind).xml

外部绑定(bind)文件用于自定义如何从 XML 模式生成 Java 类。下面我们将使用外部绑定(bind)文件来重命名生成的属性。

<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 工具时如何引用绑定(bind)文件的示例。

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

}

关于java - 使用 getter 方法表达式访问数字属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12259754/

相关文章:

javascript - After Effects - 三 Angular 波 (JavaScript)

javascript - 使用表达式作为函数参数时,AngularJS 抛出语法解析错误

java - 为什么 distinct 通过 flatMap 工作,而不是通过 map 的 "sub-stream"工作?

java - 如何使用反射包中没有的类

java - 为什么插入语句不创建新行?

javascript - 无法通过javascript正确获取选定的复选框

java - 在 Struts 2 中使用 ModelDriven 调用 Bean 的理想策略

java - 如何检查元素是否包含特定的类属性

forms - modelAttribute 和 commandName 的区别

c# - 通过表达式树编译动态实例方法,具有私有(private)和 protected 访问权限?