为什么Jsf无法访问Axis2 Generated ADBBean字段?

时间:2016-11-10 04:55:07

标签: jsf axis2

我正在使用JSF和EJB使用RMI并且工作正常,即在EJB上使用的所有实体在JSF上都有sekelton,在xhtml中我可以轻松访问其字段 以下是代码示例

 @ManagedBean("abc")
    @SessionScoped
    public class ABC{

        private Customer customer;
        public Customer getCustomer(){
        return customer;
        }

       public void setCustomer(Customer customer){
       this.customer=customer;
       }

       }

    //Entity Class Customer
    Public class Customer implements Serializable{

    private String name;

    public String getName(){
    return name;
    }
    public void setName(String name){
    this.name=name;


       }

    }

在XHTML页面中,我可以使用Like:

<input value="#{abc.customer.name}"/>

如您所见,我正在访问其直接字段,因此它可以自动访问getter和setter

但是现在我已经使用Axis2客户端生成更改为Webservices,并且他们拥有自己生成的EJB实体框架

下面是一个示例:

@ManagedBean("abc")
    @SessionScoped
    public class ABC{

    private WebClientStub.Customer customer;

    public Customer getCustomer(){
            return customer;
            }

    public void setCustomer(WebClientStub.Customer customer){
           this.customer=customer;
    }



    }

    //Entity Class Customer
    Public class Customer implements org.apache.axis2.databinding.ADBBean{

    protected String localName;

    public String getName(){
    return localName;
    }
    public void setName(java.lang.String name){
    this.localName=name;
       }
    }

并且在JSF中我无法访问名称,就像我之前访问它一样

<input value="#{abc.customer.localName}"/>

相反,我只能访问其getter或Setter,任何人都可以解释原因,或者提出解决方案

1 个答案:

答案 0 :(得分:0)

问题解决了,自动生成的类现在有一个不同的变量名,即&#39; localName&#39;在我的情况下,因此我也在JSF输入文本框中更改了这个(正如您在问题中看到的),即将发生的错误是找不到&#39;属性&#39;反对localName,我认为自动生成的getter / setter即getName()和setName()在那里我将它们重命名为getLocalName()和setLocalName()然后它工作,因此事实证明JSF只查找getter setter和是否关注财产是否已被宣布。