Create composite component in JSF2
来源:互联网 发布:unity3d破解版下载 编辑:程序博客网 时间:2024/05/16 00:44
最近在做一个J2EE框架,把一些心得记录下来。下面的例子是框架中messages component的做法,包含了几个技术点,组件中怎么加载css文件,在css中怎么加载图片。记住一点在resources文件下的所有文件夹在JSF2中默认是库名称,如果子文件夹下还有子文件夹,加载资源的时候可以如下写,都是正确的。
<h:outputStylesheet library="commons" name="css/component.common.css" target="head"/> or
<h:outputStylesheet library="commons/css" name="component.common.css" target="head"/>
步骤:
1. 开发环境:
eclipse3.7 + maven3 + jboss7.1 + h2 database
2.技术框架:
JSF2.0 + richface4.0 + EJB3.1 + CDI1.0 + JPA2.0(hibernate实现)
3.pom.xml配置:
<dependency>
<groupId>javax.enterprise</groupId>
<artifactId>cdi-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.annotation</groupId>
<artifactId>jboss-annotations-api_1.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.faces</groupId>
<artifactId>jboss-jsf-api_2.0_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.0-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.transaction</groupId>
<artifactId>jboss-transaction-api_1.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.spec.javax.ejb</groupId>
<artifactId>jboss-ejb-api_3.1_spec</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.richfaces.ui</groupId>
<artifactId>richfaces-components-ui</artifactId>
<version>4.2.1.CR1</version>
</dependency>
<dependency>
<groupId>org.richfaces.core</groupId>
<artifactId>richfaces-core-impl</artifactId>
<version>4.2.1.CR1</version>
</dependency>
4. 创建resources文件夹在META-INF下,在resources文件夹下的任何文件夹都是库名称,如commons就是库名称,在taglib.xml中必须一致。
路径:META-INF\resources\commons
5. 创建taglib.xml 在META-INF下. namespace是自己定义的,在调用的时候用。
<?xml version="1.0"?>
<facelet-taglib version="2.0"
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/javaeehttp://java.sun.com/xml/ns/javaee/web-facelettaglibrary_2_0.xsd">
<namespace>http://test.com.cn/test/taglib/commons</namespace>
<composite-library-name>commons</composite-library-name>
</facelet-taglib>
6. 创建faces-config.xml在META-INF下.
<?xml version="1.0"?>
<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_2_0.xsd"
version="2.0">
</faces-config>
7.下面是在commons文件夹下的messages.xhtml
<?xml version="1.0" encoding="utf-8"?>
<ui:composition
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute name="style" default="" required="false"/>
</composite:interface>
<composite:implementation>
<h:outputStylesheet library="commons" name="css/component.common.css" target="head"/>
<a4j:outputPanel ajaxRendered="true" layout="block">
<h:panelGroup layout="block" rendered="#{not empty facesContext.maximumSeverity}" style="#{cc.attrs.style}" styleClass="faces-padding-div">
<div class="faces-msg-box">
<h:messages errorClass="faces-msg-error" fatalClass="faces-msg-fatal" infoClass="faces-msg-info" warnClass="faces-msg-warn" />
</div>
</h:panelGroup>
</a4j:outputPanel>
</composite:implementation>
</ui:composition>
.8. component.common.css的路径是resources/commons/css/component.common.css.
图片路径是resources/commons/images.
css内容如下:
.faces-msg-error {
background: #ffffdc url(#{resource['commons:images/msg-error.gif']}) no-repeat scroll 0%;
color: #f00;
}
.faces-msg-fatal {
background: #ffffdc url(#{resource['commons:images/msg-fatal.gif']}) no-repeat scroll 0%;
color: #f00;
}
.faces-msg-info {
background: #ffffdc url(#{resource['commons:images/msg-info.gif']}) no-repeat scroll 0%;
color: #15428b;
}
.faces-msg-warn {
background: #ffffdc url(#{resource['commons:images/msg-warn.gif']}) no-repeat scroll 0%;
color: #7b5113;
}
.faces-msg-box {
background-color: #ffffdc;
padding: 3px;
border: solid 1px #BED6F8;
margin:0px;
}
9.调用方式:
xmlns:test="http://test.com.cn/test/taglib/commons"
<test:messages/>
- Create composite component in JSF2
- 关于JSF2 composite component一点理解
- custom composite component--createChildren()
- Composite、Component,S-video
- My Composite in C#
- Patterns in SOME –Composite
- 组合(composite) in Java
- Observer Component in Cairngorm
- Component In Common Use
- MVC in Joomla! -- Component
- Writing a simple Composite Component with JSF 2.0
- React Native -- The Life-Cycle of a Composite Component
- HDMI、Composite输出、Component色差输出和S-Video输出
- 关于视频格式S-Video、component、composite的区别
- Microsoft Access: ActiveX component cannot create object
- Failed to create .NET Frameworks PropertyGrid component.
- ActiveX component can't create object
- How to create a new component
- 因特网连接共享:ICS 简介
- 'Optimal' C Constructs for 8051 Microprocessors
- apache访问日志开启百度蜘蛛访问记录格式并设置按天记录
- Linux网络配置 -- ubuntu
- WIN7 C# System.Runtime.InteropServices.COMException VLC HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)
- Create composite component in JSF2
- 如何使用<identity impersonate="true"/>
- CGI协议及其开发
- 新浪微博API开发简介之PHP基础篇-用户授权
- 关联容器简介
- linux下svn不能连接上windows服务器:SSL handshake failed: SSL 错误:在证书中检测到违规的密钥用法
- 读图时代的图片优化方法
- OpenCV 學習筆記(1)安裝設置、顯示圖像
- OpenCV學習筆記(2)隱藏 Console 窗口