JSF+EJB+JBoss集成Demo
上面提到过JSF也可以像Servet一样使用容器注入的EJB组件,那我们验证一下。我们使用同样的SessionBean作为JSF托管Bean的属性。
JSF托管Bean如下
package jsfMangerBean;
import javax.ejb.EJB; import ejb.messageDrivenBean.dto.UserDTO; import ejb.sessionBean.UserService;
public class TestAction {
/** * 注入其他EJB组件 */ @EJB(beanName = "UserServiceEAOImpl") private UserService userService;
private UserDTO userDTO;
public UserDTO getUserDTO() { return userDTO; }
public void setUserDTO(UserDTO userDTO) { this.userDTO = userDTO; }
/** * 执行插入操作 * @return */ public String insert() { userService.insertUser(userDTO); return "success"; } } |
和servlet的功能差不多,都是插入数据。
下面是JSF页面文件
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> </head> <body> <f:view> <h:form id="guessForm"> 主键:<h:inputText value="#{userDTO.id}"> </h:inputText> <br /> 姓名:<h:inputText value="#{userDTO.name}"> </h:inputText> <br /> <h:commandButton id="sumbit" action="#{testAction.insert}" value="提交数字" /> <br /> </h:form> </f:view> </body> </html> |
JSF托管Bean以及导航配置文件内容如下faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?> <faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xi="http://www.w3.org/2001/XInclude" 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">
<!--托管Bean--> <managed-bean> <managed-bean-name>userDTO</managed-bean-name> <managed-bean-class>ejb.messageDrivenBean.dto.UserDTO</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
<managed-bean> <managed-bean-name>testAction</managed-bean-name> <managed-bean-class>jsfMangerBean.TestAction</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>userDTO</property-name> <value>#{userDTO}</value> </managed-property> </managed-bean>
<!--导航规则--> <navigation-rule> <from-view-id>/insertUserForm.jsp</from-view-id> <navigation-case> <from-action>#{testAction.insert}</from-action> <from-outcome>success</from-outcome> <to-view-id>/insertUserFormList.jsp</to-view-id> </navigation-case> </navigation-rule> <navigation-rule> <from-view-id>/insertUserFormList.jsp</from-view-id> </navigation-rule> </faces-config> |
可视化插件对以上导航的图元化显示如下
运行之后效果如下:
提交之后数据库效果如下
结果就是JSF也可以轻而易举的获得容器注入的EJB组件。