Create composite component in JSF2

最近在做一个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/>

 

 

基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip基于bert实现关系三元组抽取python源码+数据集+项目说明.zip 个人大四的毕业设计、课程设计、作业、经导师指导并认可通过的高分设计项目,评审平均分达96.5分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 [资源说明] 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),供学习参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值