2012-01-17 3 views
0

Enviornment:Управляемые Бобы не получают развертывается с остальной частью приложения

  • IDE: Eclipse, 3,7
  • сервер: Tomcat 7.0
  • JSF 2,0

Я новичок в JSF и недавно приступил к возникновению странной проблемы при попытке развернуть приложение.

По какой-то причине все развертывается, за исключением бобов. Это началось, когда я заметил, что независимо от того, что я сделал, я не мог получить доступ к вновь созданному bean-компоненту из facelet. Затем я заметил, что я также не мог использовать новые функции, созданные в старых бобах.

я сделал небольшой эксперимент, где я взял существующий метод установки в моем входе бобе, и изменил его от:

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

в

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

Но значение, которое было извлечено из фасоли на следующей странице было значение, которое я ввел в форму для входа.

Я думаю, что мои файлы faces-config.xml и web.xml настроены правильно. Я искал проблему, и единственное, что я обнаружил, это то, что добавление аннотаций @ManagedBean и @SessionScope до того, как объявления bean могут помочь в более старых версиях 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'? –

ответ

1

Вы очистили весь существующий скомпилированный код? Похоже, что вокруг есть несколько старых классов. Иногда это происходит при использовании eclipse.

Также может быть, что путь класса tomcat отличается от пути класса eclipse.

+1

Это был ответ. Чтобы заставить его работать, мне пришлось очистить проект, затем очистить сервер, а затем запустить проект. Если я только очистил один из них, бобы не будут правильно размещены. – Morglor

Смежные вопросы