gpt4 book ai didi

jsf - 关于JSF中托管bean之间的通信

转载 作者:行者123 更新时间:2023-12-03 04:06:18 27 4
gpt4 key购买 nike

看来我不清楚我之前关于托管bean的问题。所以,我以更系统的方式再次发布。

我有一页:

<?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>

这是它的 bean:

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:

<?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>

这是它的 bean:

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()中标记???的地方应该填什么。如何获取此 bean 中其他 bean 的值?

最佳答案

正如您可以在 JSF2 tutorial 中了解到的那样可以使用依赖注入(inject)功能。在您的情况下,它将是将 MasterBean 实例注入(inject)到 pageBean 中。我相信你的 pageBean 中可以有这样的东西:

@ManagedBean(name="pageBean")
@ViewScoped
public class pageBean {

private String content;

@ManagedProperty(value="#{MasterBean}")
private MasterBean masterBean;

...

然后在你的方法中使用它:

 public void speakHello(){
//how do i get value of laaala here which is in MasterBean???
content = masterBean.getLaala() + " Hello friend";
}

我自己还没有尝试过。我希望它会起作用。

顺便说一句,强烈建议类名不要以小写字母开头。因此 pageBean 类应该被称为 PageBean

关于jsf - 关于JSF中托管bean之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779480/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com