JSF和Spring共用的工具类


import javax.faces.FactoryFinder;
import javax.faces.application.Application;
import javax.faces.application.ApplicationFactory;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.servlet.ServletContext;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

public final class SpringFacesUtil {

public SpringFacesUtil() {
}

/**
* 从Spring中查找bean.
* @param beanName String
* @return Object
*/
public static Object findSpringBeanByName(String beanName) {
ServletContext context = (ServletContext) FacesContext
.getCurrentInstance().getExternalContext().getContext();
ApplicationContext appctx = WebApplicationContextUtils
.getRequiredWebApplicationContext(context);
return appctx.getBean(beanName);
}

/**
* 由spring的xml配置文件位置和bean的名字取得bean
* @param xmlPath spring配置文件位置
* @param beanName 要取得bean的名字
* @return
*/
public static Object findSpringBeanByPath(String xmlPath,String beanName){
ApplicationContext ctx =new FileSystemXmlApplicationContext(xmlPath);
return ctx.getBean(beanName);
}
/**
* 从JSF中查找bean.
* @param beanname String
* @return Object
*/
@SuppressWarnings("deprecation")
public static Object lookupJsfBean(String beanname) {
Object obj = getValueBinding(getJsfEl(beanname)).getValue(
FacesContext.getCurrentInstance());
return obj;
}

@SuppressWarnings("deprecation")
private static ValueBinding getValueBinding(String el) {
return getApplication().createValueBinding(el);
}

private static Application getApplication() {
ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder
.getFactory(FactoryFinder.APPLICATION_FACTORY);
return appFactory.getApplication();
}

private static String getJsfEl(String value) {
return "#{" + value + "}";
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值