为什么 Jsf 无法访问 Axis2 Generated ADBBean 字段?
why Jsf can't access Axis2 Generated ADBBean field?
我使用 RMI 将 JSF 与 EJB 一起使用,它工作正常,即在 EJB 中使用的所有实体在 JSF 和 xhtml 中都有一个 sekelton,我可以轻松访问它的字段
下面是一个示例代码
@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 客户端生成的 Web 服务,它们有自己生成的 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,谁能解释一下原因,或者想出一个解决方案
问题已解决,自动生成的 类 现在有一个不同的变量名称,即我的 'localName' 因此我也在 JSF 输入文本框中更改了它(如您所见在问题中)出现的错误是 'property was not found' 对 localName 我认为自动生成的 getter/setter 即 getName() 和 setName() 在那里我将它们重命名为 getLocalName() 和setLocalName() 然后它起作用了,因此结果证明 JSF 只查找 getter setter 并且不关心 属性 是否被声明。
我使用 RMI 将 JSF 与 EJB 一起使用,它工作正常,即在 EJB 中使用的所有实体在 JSF 和 xhtml 中都有一个 sekelton,我可以轻松访问它的字段 下面是一个示例代码
@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 客户端生成的 Web 服务,它们有自己生成的 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,谁能解释一下原因,或者想出一个解决方案
问题已解决,自动生成的 类 现在有一个不同的变量名称,即我的 'localName' 因此我也在 JSF 输入文本框中更改了它(如您所见在问题中)出现的错误是 'property was not found' 对 localName 我认为自动生成的 getter/setter 即 getName() 和 setName() 在那里我将它们重命名为 getLocalName() 和setLocalName() 然后它起作用了,因此结果证明 JSF 只查找 getter setter 并且不关心 属性 是否被声明。