2014-12-15 2 views
0

У меня есть два класса управляемых видов (UserBean.java & HelloBean.java) и один класс index.xhthl. В классе HelloBean.java я использовал @ManagedProperty anotation для доступа к объекту UserBean.java, и у меня есть метод в пределах HelloBean.java класс.Как получить доступ к одному управляемому из другого в jsf

здесь, мои классы:

UserBean.java

package com.bean; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.SessionScoped; 


@ManagedBean(name="ubean", eager=true) 
@SessionScoped 
public class UserBean { 

    private String username; 

    public String getUsername() { 
     return username; 
    } 
    public void setUsername(String username) { 
     this.username = username; 
    } 
} 

HelloBean.java

package com.bean; 

import javax.faces.bean.ManagedBean; 
import javax.faces.bean.ManagedProperty; 
import javax.faces.bean.RequestScoped; 


@ManagedBean(name="hellobean", eager=true) 
@RequestScoped 
public class HelloBean { 

    @ManagedProperty(value="#{ubean}") 
    private UserBean mbean; 
    private String username; 

    public String getUsername() { 
     if(mbean!=null){ 
      username=mbean.getUsername(); 
     } 
     return username; 
    } 

    public void setMbean(UserBean mbean) { 
     this.mbean = mbean; 
    } 

    public UserBean getMbean() { 
     return mbean; 
    } 

    public void showMsg(){ 
     System.out.println("UserName :"+username); 
    } 
} 

И index.xhtml

<body> 
    <h:form> 
     <h:inputText id="username" value="#{ubean.username}"></h:inputText> 
     <h:commandButton value="submit" action="#{hellobean.showMsg}"></h:commandButton> 
    </h:form> 
</body> 

Я хочу использовать метод showMsg() от index.xhtml класс. Метод запускается нажатием commandButton, но он всегда возвращает null вместо inputText значение. В чем проблема в моих кодах. Кто-то, помогает ... Заранее спасибо ..

+0

Я думаю, что объем управляемых bean-компонентов должен быть одинаковым. – Jens

+0

Как заполняется ваш UserBean? которые дают ему имя пользователя? – Adi

+3

Это не 'System.out.println (" UserName: "+ getUsername());' вместо 'System.out.println (" UserName: "+ username);' –

ответ

0

Здесь username является собственностью UserBean.java класс. В результате вам нужно будет вызвать переменную username через объект родительского класса (UserBean.java). Поэтому попробуйте, mbean.getUsername() вместо username.

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