高分求答:JSF中不能取得bean

moon&sean 2011-09-30 10:06:43
web.xml中有如下配置

<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>
......
/WEB-INF/faces-managed-beans-user.xml,
... ...
</param-value>
</context-param>


faces-managed-beans-user.xml中有 bean的配置(alertConfigBean和ruleBean)如下:

<managed-bean>
<managed-bean-name>alertConfigBean</managed-bean-name>
<managed-bean-class>
com.test.bean.rule.AlertConfigBean
</managed-bean-class>
<managed-bean-scope>application</managed-bean-scope>
</managed-bean>
......
<managed-bean>
<managed-bean-name>ruleBean</managed-bean-name>
<managed-bean-class>
com.infosec.secsrv.scms20.bean.rule.RuleBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>


我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");
求高手解答!
...全文
532 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
moon&sean 2011-10-18
  • 打赏
  • 举报
回复
,正在试验中
moon&sean 2011-10-13
  • 打赏
  • 举报
回复
顶啊顶,还有人吗?
绿竹痕 2011-10-12
  • 打赏
  • 举报
回复
看到这个问题:首先要说,jsf一般只作为显示层的实现。jsf管理的backing bean是作为控制器来连接UI和业务逻辑bean。你如果要得到backing bean,其实大可不必。backing bean只做为VO(传递数据)和调用后台业务Bean;如果要获得业务逻辑bean的话,其实你可以结合spring框架来做。有spring管理业务逻辑bean和backing bean,以上是个人建议。
具体怎么获得jsf管理的bean呢?
在网上查了些资料,内容如下:
如果要在其它类中取得Bean对象,则可以先取得javax.faces.context.FacesContext,它代表了JSF目前的执行环境对象,接着尝试取得javax.faces.el.ValueBinding对象,从中取得指定的Bean对象,例如:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding("#{user}");
UserBean user = (UserBean) binding.getValue(context);
如果只是要尝试取得Bean的某个属性,则可以如下:
FacesContext context = FacesContext.getCurrentInstance();
ValueBinding binding =
context.getApplication().createValueBinding(
"#{user.name}");
String name = (String) binding.getValue(context);
本人没有验证,请lz自己验证下
moon&sean 2011-10-12
  • 打赏
  • 举报
回复
都不给力啊!!!
moon&sean 2011-10-12
  • 打赏
  • 举报
回复
顶顶顶
moon&sean 2011-10-12
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 liwenjie001 的回复:]

看到这个问题:首先要说,jsf一般只作为显示层的实现。jsf管理的backing bean是作为控制器来连接UI和业务逻辑bean。你如果要得到backing bean,其实大可不必。backing bean只做为VO(传递数据)和调用后台业务Bean;如果要获得业务逻辑bean的话,其实你可以结合spring框架来做。有spring管理业务逻辑bean和backing bean,以上是个人建议……
[/Quote]
高手,应该是这样,正在试验中
zealVampire 2011-10-10
  • 打赏
  • 举报
回复
http://www.360doc.com/content/11/0118/13/19525_87338785.shtml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
version="1.2">
<managed-bean>
<managed-bean-name>modelBean</managed-bean-name>
<managed-bean-class>myproject.ModelBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>backingBean</managed-bean-name>
<managed-bean-class>myproject.BackingBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>controllerBean</managed-bean-name>
<managed-bean-class>myproject.ControllerBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>modelBean</property-name>
<value>#{modelBean}</value>
</managed-property>
</managed-bean>
</faces-config>
Joe_vv 2011-10-10
  • 打赏
  • 举报
回复
moon&sean 2011-10-10
  • 打赏
  • 举报
回复
高分求啊求,有会的请回答
moon&sean 2011-10-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wangxf_8341 的回复:]

你把FacesContext.getCurrentInstance().getExternalContext().getApplicationMap()打印一下
应该是没有给alertConfigBean实例化,当然就是空的了
[/Quote]
是,关键是该怎么实例化alertConfigBean?
luyun2011 2011-10-10
  • 打赏
  • 举报
回复
JSF,向楼主学习一下
淡定的峰哥 2011-10-10
  • 打赏
  • 举报
回复
你把FacesContext.getCurrentInstance().getExternalContext().getApplicationMap()打印一下
应该是没有给alertConfigBean实例化,当然就是空的了
moon&sean 2011-10-10
  • 打赏
  • 举报
回复
100分呢,没人来回答吗?
moon&sean 2011-10-10
  • 打赏
  • 举报
回复
顶啊顶
moon&sean 2011-10-10
  • 打赏
  • 举报
回复
同志们来点实际性的内容啊,谁会,跪求答案
moon&sean 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wula0010 的回复:]

引用楼主 ma1kong 的回复:
我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");

你直接import,然后引用不……
[/Quote]
直接饮用的回耦合度高,通过配置文件,减少耦合。
接着跪求答案!!!!
sdau20072000 2011-09-30
  • 打赏
  • 举报
回复
在定义ruleBean时把alertConfigBean写在<property>里不行吗
zhujia130 2011-09-30
  • 打赏
  • 举报
回复
遇到同样类似问题啊...
niuniu20008 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wula0010 的回复:]
引用楼主 ma1kong 的回复:
我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");

你直接import,然后引用不好……
[/Quote]
有点道理,不会jsf,帮顶
wula0010 2011-09-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 ma1kong 的回复:]
我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");
[/Quote]
你直接import,然后引用不好么?为什么要这么麻烦?
加载更多回复(1)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧