首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2011-12-04 
高分求答:JSF中不能取得beanweb.xml中有如下配置XML codecontext-paramparam-namejavax.faces.CONFIG_

高分求答:JSF中不能取得bean
web.xml中有如下配置

XML code
<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)如下:
XML code
<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");
求高手解答!

[解决办法]
国庆国庆,全国同庆!放下代码,去玩吧!
[解决办法]
探讨
我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");

[解决办法]
探讨
引用:
我想在RuleBean中取得alertConfigBean,怎么获取?
用下面的代码不可以吗?为什么取出来的是null?
FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("alertConfigBean");

你直接import,然后引用不好……

[解决办法]
遇到同样类似问题啊...
[解决办法]
在定义ruleBean时把alertConfigBean写在<property>里不行吗
[解决办法]
你把FacesContext.getCurrentInstance().getExternalContext().getApplicationMap()打印一下
应该是没有给alertConfigBean实例化,当然就是空的了
[解决办法]
JSF,向楼主学习一下
[解决办法]

[解决办法]
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>
[解决办法]
看到这个问题:首先要说,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自己验证下

热点排行