gpt4 book ai didi

java - 向 JSF 2.0 页面回显消息

转载 作者:行者123 更新时间:2023-12-02 07:34:17 31 4
gpt4 key购买 nike

我是 JSF 2.0 的新手,正在尝试向我的页面输出一条消息。我想要一个接受一些输入、进行一些处理并显示一些输出的表单。看起来很简单吧?但是,我不想在支持 bean 中定义属性来通过以下方式显示输出:

<h:outputText value="#{bean.property}" />

这种方法对我来说似乎很困惑;我想要显示的每个状态消息都需要一个成员变量。我也不想将输出显示绑定(bind)到表单变量,如下所示:

<h:inputText id="someId" />
<h:message for="someId" />

因为我的状态结果没有对应的表单变量。设置消息并使用全局消息:

<h:messages globalOnly="true" />

也不能很好地工作,因为我可能需要更新页面上的多个元素(不要将所有状态消息集中到同一个 div 中)。

来自 Spring MVC,可以在传递给 View 的 ModelAndView 对象上设置任意属性,然后从 View 内访问这些属性。 JSF 中有相应的方法吗?

谢谢。

最佳答案

为了使 View 可以轻松使用任意变量,您可以在例如中定义一个 Map通过将以下内容放入 faces-config.xml 中来请求范围:

<managed-bean>
<description>Request scoped map for general usage</description>
<managed-bean-name>map</managed-bean-name>
<managed-bean-class>java.util.HashMap</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>

您可以将此映射注入(inject)您的支持 bean 中,或以编程方式请求它,然后在其中放入一些内容。例如:

@ManagedBean
public class GeneralMapBacking {

@ManagedProperty("#{map}")
private Map<Object, Object> map;

public void onPreRenderView() {
map.put("foo", "bar");
}

public void setMap(Map<Object, Object> map) {
this.map = map;
}
}

您可以通过 Facelet 上的 EL 引用此 map ,例如:

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
>
<h:body>
<f:event listener="#{generalMapBacking.onPreRenderView}" type="preRenderView" />

#{map.foo}
</h:body>
</html>

关于java - 向 JSF 2.0 页面回显消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12481983/

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