我正在使用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,任何人都可以解释原因,或者提出解决方案
答案 0 :(得分:0)
问题解决了,自动生成的类现在有一个不同的变量名,即&#39; localName&#39;在我的情况下,因此我也在JSF输入文本框中更改了这个(正如您在问题中看到的),即将发生的错误是找不到&#39;属性&#39;反对localName,我认为自动生成的getter / setter即getName()和setName()在那里我将它们重命名为getLocalName()和setLocalName()然后它工作,因此事实证明JSF只查找getter setter和是否关注财产是否已被宣布。