关于JSF中受管Bean之间的通信 [英] Regarding communication between managed bean in JSF
问题描述
似乎我以前对托管bean的问题不清楚.因此,我将以更系统的方式再次发布它.
It seems I am not clear on my previous question about managed bean. So, I am posting it again in a more systematic manner.
我有一页:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<ui:insert name="head">
</ui:insert>
<br/><br/>
<h:inputText value="#{MasterBean.laala}"/>
<br/><br/>
<ui:insert name="content">
</ui:insert>
</h:body>
</html>
这是它的豆子:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="MasterBean")
@ViewScoped
public class MasterBean {
private String laala;
public String getLaala() {
return laala;
}
public void setLaala(String laala) {
this.laala = laala;
}
public MasterBean() {
}
}
这是使用master.xhtml的data.xhtml:
This is data.xhtml which uses master.xhtml:
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<ui:composition template="master.xhtml">
<ui:define name="head">
laala
</ui:define>
<h:outputText value="#{pageBean.content}"/>
<ui:define name="content">
<h:commandButton actionListener="#{pageBean.speakHello}"/>
</ui:define>>
</ui:composition>
</h:body>
</html>
这是它的豆子:
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="pageBean")
@ViewScoped
public class pageBean {
private String content;
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public void speakHello(){
//how do i get value of laaala here which is in MasterBean???
content = ??? + " Hello friend";
}
public pageBean() {
}
}
我应该在speakHello()中标记???
的空白处输入什么.如何获得该豆中其他豆的价值?
What should I put in the blank where ???
is marked in speakHello(). How do I get value of other bean in this bean?
推荐答案
您可以在 JSF2教程可以使用依赖项注入功能.在您的情况下,这是关于将MasterBean
实例注入到pageBean
中.我相信您的pageBean
中可以有这样的东西:
As you can learn in a JSF2 tutorial one can use the dependency injection feature. In your case it would be about injecting MasterBean
instance to pageBean
. I believe you could have something like this in your pageBean
:
@ManagedBean(name="pageBean")
@ViewScoped
public class pageBean {
private String content;
@ManagedProperty(value="#{MasterBean}")
private MasterBean masterBean;
...
a然后在您的方法中使用它:
a then use it in your methods:
public void speakHello(){
//how do i get value of laaala here which is in MasterBean???
content = masterBean.getLaala() + " Hello friend";
}
我还没有尝试过.我希望它能起作用.
I haven't tried that myself. I hope it will work.
顺便说一句,强烈建议不要以小写字母开头课程名称.因此,应该将pageBean
类称为PageBean
.
BTW, it's highly recommended not to start class name with a small letter. So pageBean
class should be called PageBean
instead.
这篇关于关于JSF中受管Bean之间的通信的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!