У меня есть два класса управляемых видов (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
значение. В чем проблема в моих кодах. Кто-то, помогает ... Заранее спасибо ..
Я думаю, что объем управляемых bean-компонентов должен быть одинаковым. – Jens
Как заполняется ваш UserBean? которые дают ему имя пользователя? – Adi
Это не 'System.out.println (" UserName: "+ getUsername());' вместо 'System.out.println (" UserName: "+ username);' –