2016-11-10 42 views
0

我正在使用JSF和EJB一起使用RMI,它工作正常,即所有在EJB上使用的實體在JSF上都有一個關鍵字並且在xhtml中我可以很容易地訪問它的字段 下面是一個示例代碼爲什麼Jsf無法訪問Axis2生成的ADBBean字段?

@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頁面,我可以用我愛:

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

正如你可以在上面看到,我訪問其直接場,因此它可以同時訪問getter和setter自動

但現在我haved改爲使用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訪問它,任何人能解釋爲什麼,或拿出一個解決方案

+0

您是否確定**原始代碼中的「客戶」字段是私有的,並且沒有獲取者/設置者?或者你在那裏有getter/setter? – Kukeltje

+0

是的,它是私人的,它有公共的getter setter我忘了提及。但即使在改變getter setter後,這也不是問題。但Customer類的屬性現在沒有被訪問..我是否需要在xhtml頁面中添加另一個「xmlns:」? etc –

+0

我剛剛在CODE中添加了一條評論,如果沒關係的話。 ? –

回答

0

問題已解決,自動生成的類現在有一個不同的變量名稱,即我的情況下爲'localName',因此我也在JSF輸入文本框中更改了這一點(正如您在問題中看到的那樣)我發現自動生成的getter/setter(即getName()和setName())在那裏,我將它們重命名爲getLocalName()和setLocalName(),然後運行JSF只查找getter setter,不關心屬性是否聲明。

相關問題