JSF Spring Bean 设置属性
Posted
技术标签:
【中文标题】JSF Spring Bean 设置属性【英文标题】:JSF Spring Bean set property 【发布时间】:2010-03-30 08:29:53 【问题描述】:我有一个 JSF Web 应用程序。我将 Beans 用作 Spring Beans(不是 JSF 托管 bean)。现在我有一个应用程序的 URL www.example.com?parameter=2
我想在页面加载时将此参数设置为 bean。我现在如何使用 Spring Web Flow 执行此操作,但使用 JSF Navigation 我无法执行此操作。
您如何看待使用 JSTL c:set
或 jsp:setProperty
?
感谢您的帮助。
亲切的问候 塞巴斯蒂安
【问题讨论】:
【参考方案1】:来自here:
可以扩展 Springs org.springframework.beans.factory.config.PropertyPlaceholderConfigurer 访问 RequestContext (org.springframework.web.context.request.RequestContextHolder#getRequestAttributes()) 以解析 $xyz 中的类似属性豆子。 当然,这只适用于具有“请求”范围的 Spring bean。
如果 bean 在会话范围内,您可以简单地在 Phase Listener 方法中使用以下内容:
property = FacesContezt.getCurrentInstance().getExternalContext
.getRequestMap().get("paramName");
相位监听器是用
定义的<f:view beforePhase="#bean.method">
如果使用 facelets,则为 beforePhaseListener
如果您使用的是faces-context.xml
,则可以使用<managed-property>
。
【讨论】:
该 Bean 在会话范围内 :( 感谢您的回答。 哪种操作方法?我没有任何行动方法。该页面通过带有参数的 url 地址加载。用户不执行任何操作。该页面应根据请求参数显示一些数据。我没有使用 faces-config.xml 来定义托管 bean。所有 bean 都是在应用程序上下文文件中定义的 spring bean。 谢谢。我想我需要编写自己的 Phaselistener 因为我使用的是 JSF 1.1 并且没有 beforPhase 标签属性。以上是关于JSF Spring Bean 设置属性的主要内容,如果未能解决你的问题,请参考以下文章
Spring 安全性和 JSF:在登录时调用支持 bean 的方法?
为什么GlassFish 5.1.0中的JSF将我的@ViewScoped CDI bean的ID属性设置为null?
Spring JSF 集成:如何在 JSF 托管 bean 中注入 Spring 组件/服务?