2012-01-17 43 views
0

Enviornment:託管Bean沒有得到部署與應用程序的其餘部分

  • IDE:Eclipse的3.7
  • 服務器:Tomcat的7.0
  • JSF 2.0

我是新來的JSF和最近開始有一個奇怪的問題,當我嘗試部署一個應用程序。

出於某種原因,除了bean之外,所有東西都被部署。當我注意到無論我做了什麼,我都無法從facelet訪問新創建的bean。然後我注意到我也無法使用在舊bean中創建的新函數。

我做了一個小實驗,我在登錄豆把現有的setter方法,以及改變了它:

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

public void setName(String name) { 
    this.name = "not what was typed"; 
} 

但那是從bean檢索到的值在下一頁是我輸入到登錄表單中的值。

我想我的faces-config.xml和web.xml文件都設置正確。我搜索了這個問題,唯一發現的是在bean聲明之前添加@ManagedBean和@SessionScope註釋可能有助於舊版本的JSF,但它不起作用。

我已經嘗試創建一個新的服務器,並重新創建項目,但這也沒有幫助。下面是我與我的新項目獲得(其擁有所有正確創建的相同文件的舊項目,文件和內容粘貼)的錯誤:

An Error Occurred: 

javax.el.PropertyNotFoundException: /login.xhtml at line 21 and column 42 value="#{loginBean.name}": Property 'name' not found on type com.tutorial.LoginBean 

Caused by: 
javax.el.PropertyNotFoundException - /login.xhtml at line 21 and column 42 value="#{loginBean.name}": Property 'name' not found on type com.tutorial.LoginBean 

這裏是登錄豆:

/** 
* LoginBean.java 
* 
*/ 

package com.tutorial; 

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 
import javax.faces.context.FacesContext; 
import javax.faces.event.ActionEvent; 

@ManagedBean(name="loginBean") 
@SessionScoped 
public class LoginBean { 
private String name; 
private String password; 

public String getName() { 
    return name; 
} 

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

public String getPassword() { 
    return password; 
} 

public void setPassword(String password) { 
    this.password = password; 
} 

public void savePerson(ActionEvent actionEvent) { 
    FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Welcome " 
      + name + " " + password + "!")); 
} 
} 

在這裏,我們有從login.xhtml一個片段,它使用變量LoginBean

<ui:define name="sideBar"> 
     <p:accordionPanel multiple="true" activeIndex="0,1"> 
      <p:tab title="Login" id="loginTab"> 
       <h:form> 
        <h:panelGrid columns="1" style="width: 179px;" class="noBorder"> 
         <h:outputLabel for="username" value="Username"></h:outputLabel> 
         <p:message for="username" id="msgUsername" /> 
         <h:inputText id="username" value="#{loginBean.name}" 
          required="true" label="Username"></h:inputText> 

         <h:outputLabel for="password" value="Password"></h:outputLabel> 
         <p:message for="password" id="msgPassword" /> 
         <h:inputSecret id="password" value="#{loginBean.password}" 
          required="true" label="Password"> 
         </h:inputSecret> 
         <h:commandButton action="login"></h:commandButton> 
        </h:panelGrid> 
       </h:form> 
      </p:tab> 
      <p:tab title="Information"> 
       Blah blah blah. 

      </p:tab> 
     </p:accordionPanel> 
    </ui:define> 

任何人都知道問題是什麼?

對不起,這篇冗長的文章。

+0

你能提供你的'faces-config.xml'和'web.xml'嗎? – 2012-01-17 11:53:51

回答

1

您是否清理了所有現有的編譯代碼?似乎有一些老的課程在附近。這在使用eclipse時有時會發生。

也可能是tomcat類路徑與eclipse類路徑不同。

+1

這就是答案。爲了使它起作用,我必須清理項目,然後清理服務器,然後運行項目。 如果我只清理其中的一個,bean將不能正確部署。 – Morglor 2012-01-21 03:32:43

相關問題