本系统使用的是jeecmsv9版本,收集网上知识后,进行个人汇总

首先,自己创建一个表.. 我们使用的是oracle的库

CREATE TABLE WEIPENG(
ID NUMBER(4) PRIMARY KEY,
CONTENT VARCHAR2(255)
);

配置表对应的映射 在 com.jeecms.cms.entity.main.hbm.oracle创建 WeiPeng.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" ><hibernate-mapping package="com.jeecms.cms.entity.main"><classname="WeiPeng"table="WEIPENG"><meta attribute="sync-DAO">false</meta><cache usage="read-write"/><id name="id" type="java.lang.Integer" column="ID"><generator class="assigned"></generator></id>   <propertyname="content"column="CONTENT"type="string"not-null="true"length="100"/></class>
</hibernate-mapping> 

在 com.jeecms.cms.entity.main 创建对应的实体类 WeiPeng

package com.jeecms.cms.entity.main;import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;import org.apache.commons.lang.StringUtils;
import org.json.JSONArray;
import org.json.JSONObject;import com.jeecms.common.util.DateUtils;
/*** 投稿表实体类* @author liyu**/
public class WeiPeng implements Serializable{private Integer id;//投稿idprivate String content;//标题public JSONObject convertToJson(){JSONObject json = new JSONObject();if (getId()!=null) {json.put("id", getId());}else{json.put("id", "");}if (StringUtils.isNotBlank(getContent())) {json.put("content", getContent());}else{json.put("content", "");}return json;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}

在 com.jeecms.cms.dao.main 创建Dao接口方法

package com.jeecms.cms.dao.main;import java.util.List;import com.jeecms.cms.entity.main.WeiPeng;public interface TableTestDao {public List<WeiPeng> getList();//获取数据库中的所有内容
}

在 com.jeecms.cms.dao.main.impl 创建   Dao的实现类 TableTestDaoImpl

package com.jeecms.cms.dao.main.impl;import java.util.List;import com.jeecms.cms.dao.main.TableTestDao;
import com.jeecms.cms.entity.main.TableTest;
import com.jeecms.cms.entity.main.WeiPeng;
import com.jeecms.common.hibernate4.Finder;
import com.jeecms.common.hibernate4.HibernateBaseDao;public class TableTestDaoImpl  extends HibernateBaseDao<WeiPeng, Integer>implements TableTestDao{public TableTestDaoImpl() {}//空构造@Overrideprotected Class<WeiPeng> getEntityClass() {return WeiPeng.class;}@Overridepublic List<WeiPeng> getList() {Finder f = Finder.create("from WeiPeng bean");f.setCacheable(true);List find = find(f);return find;}
}

在com.jeecms.cms.manager.main创建Mng接口   TableTestMng

package com.jeecms.cms.manager.main;import java.util.List;
import com.jeecms.cms.entity.main.WeiPeng;
public interface TableTestMng {public List<WeiPeng> getList();
}

在 com.jeecms.cms.manager.main.impl创建Mng的实现类  TableTestMngImpl

package com.jeecms.cms.manager.main.impl;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import com.jeecms.cms.dao.main.TableTestDao;
import java.util.List;
import com.jeecms.cms.entity.main.TableTest;
import com.jeecms.cms.entity.main.WeiPeng;
import com.jeecms.cms.manager.main.TableTestMng;
public class TableTestMngImpl implements TableTestMng{public TableTestMngImpl() {}//空构造private TableTestDao dao;@Autowired //自动绑定public void setDao(TableTestDao dao) {this.dao = dao;}@Transactional(readOnly = true)public List<WeiPeng> getList() {return dao.getList();}
}

在com.jeecms.cms.action.directive 创建标签类TableTestDirective

package com.jeecms.cms.action.directive;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.jeecms.cms.Constants;
import com.jeecms.cms.entity.main.TableTest;
import com.jeecms.cms.entity.main.WeiPeng;
import com.jeecms.cms.manager.main.TableTestMng;
import static com.jeecms.cms.Constants.TPL_SUFFIX;
import static com.jeecms.common.web.Constants.UTF8;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import com.jeecms.common.web.freemarker.DefaultObjectWrapperBuilderFactory;
import com.jeecms.common.web.freemarker.DirectiveUtils;
import com.jeecms.common.web.freemarker.DirectiveUtils.InvokeType;
import com.jeecms.common.web.freemarker.ParamsRequiredException;
import com.jeecms.core.entity.CmsSite;
import com.jeecms.core.web.util.FrontUtils;
import freemarker.template.TemplateDirectiveModel;
import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel;
public class TableTestDirective  implements TemplateDirectiveModel{/*** 标签名称* */public static final String TPL_NAME = "cms_table_test";/*** 输出参数:列表数据*/public static final String OUT_LIST = "tag_list";public TableTestDirective() {}/*** 传入参数,列表样式。*/public static final String PARAM_STYLE_LIST = "styleList";@Overridepublic void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body) throws TemplateException, IOException {CmsSite site = FrontUtils.getSite(env);//获取站点List<WeiPeng> list = getList(params, env);//获取内容列表Map<String, TemplateModel> paramWrap = new HashMap<String, TemplateModel>(params);paramWrap.put(OUT_LIST, DefaultObjectWrapperBuilderFactory.getDefaultObjectWrapper().wrap(list));//将params的值复制到variable中Map<String, TemplateModel> origMap = DirectiveUtils.addParamsToVariable(env, paramWrap);InvokeType type = DirectiveUtils.getInvokeType(params);String listStyle = DirectiveUtils.getString(PARAM_STYLE_LIST, params);if (InvokeType.sysDefined == type) {if (StringUtils.isBlank(listStyle)) {throw new ParamsRequiredException(PARAM_STYLE_LIST);}env.include(Constants.TPL_STYLE_LIST + listStyle + TPL_SUFFIX, UTF8, true);} else if (InvokeType.userDefined == type) {if (StringUtils.isBlank(listStyle)) {throw new ParamsRequiredException(PARAM_STYLE_LIST);}FrontUtils.includeTpl(Constants.TPL_STYLE_LIST, site, env);} else if (InvokeType.custom == type) {FrontUtils.includeTpl(TPL_NAME, site, params, env);} else if (InvokeType.body == type) {body.render(env.getOut());} else {throw new RuntimeException("invoke type not handled: " + type);}DirectiveUtils.removeParamsFromVariable(env, paramWrap, origMap);//将variable中的params值移除
}private List<WeiPeng> getList(Map params, Environment env) throws TemplateException {return tableTestMng.getList();}@Autowiredprivate TableTestMng tableTestMng;}

标签类需要在jeecms-context.xml和jeecms.properties中进行配置

在jeecms-context.xml中加入


<bean id="cms_table_test" class="com.jeecms.cms.action.directive.TableTestDirective"/><bean id="TableTestMng" class="com.jeecms.cms.manager.main.impl.TableTestMngImpl" /><bean id="TableTestDao" class="com.jeecms.cms.dao.main.impl.TableTestDaoImpl" />

在jeecms.properties中加入

directive.cms_table_test=cms_table_test

前台页面

 [@cms_table_test][#list tag_list as a]<li>id为:${a.id}</li><li>对应的内容是:${a.content}</li>[/#list][/@cms_table_test]

最后实现的效果

jeecms9自定义标签以及使用新创建的数据库表相关推荐

  1. 新创建的数据库,执行db2look时,遇到package db2lkfun.bnd bind failed

    在新创建的数据库中,执行db2look的时候,存在这样的问题 db2v97i1@oc0644314035 ~]$ db2look -d sample -e -l -o db2look.ddl -- N ...

  2. 创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表

    创建ASP.NET Core MVC应用程序(3)-基于Entity Framework Core(Code First)创建MySQL数据库表 创建数据模型类(POCO类) 在Models文件夹下添 ...

  3. linux数据库创建表空间语句,如何用LINUX用命令创建ORACLE数据库表空间和用户

    如何用LINUX用命令创建ORACLE数据库表空间和用户 文本模式下如何建 更新时间:2019-06-21 19:36 最满意答案 先su 到 oracle用户,SYS用户以DBA身份登陆 //创建临 ...

  4. 创建oracle 数据库表空间,角色,用户的sql语句

    创建oracle 数据库表空间,角色,用户的sql语句 1.创建角色 CREATE ROLE "QIUDINGROLE" NOT IDENTIFIED; GRANT "C ...

  5. 创建html自定义标签,如何为htm创建自定义标签

    您可以按照以下步骤创建自定义html标签: 步骤1-注册一个新元素. 使用document.registerElement()创建自定义元素: var XFoo = document.register ...

  6. html5创建自定义标签,在html中创建自定义标签

    创建并使用自定义标签 Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签),本篇介绍使用 CustomElem ...

  7. SQL数据库语言基础之SQL Server自带数据类型、自定义数据类型与使用、创建修改数据表

    文章目录 一.几种数据类型 二.创建数据表 三.修改数据表结构 一.几种数据类型 1.Character 字符串类型 char.chr(5).varchar.varchar(5).text 数据类型 ...

  8. java联接pg库_Java14:使用Java 14的新记录联接数据库表

    java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...

  9. Java14:使用Java 14的新记录联接数据库表

    您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将从如何设置您的项目开 ...

  10. 创建oracle数据库表空间并分配用户

    我们在本地的oracle上或者virtualbox的oracle上 创建新的数据库表空间操作: 通过system账号来创建并授权 /* --创建表空间 create tablespace YUJKDA ...

最新文章

  1. 博世力士乐液压_[Event Review] Company Visit Bosch Rexroth 博世力士乐液压工厂参观
  2. OpenStack 架构图
  3. am335x 配置 GPIO 为可输入也可输出
  4. How to write an operating system
  5. Python3 条件控制
  6. java经典50道_50道经典的JAVA编程题(41-45)
  7. web前端数组处理之扁平化数组
  8. 【树莓派学习笔记】九、C语言寄存器操作控制GPIO
  9. 电脑练习打字软件_Type Fu for Mac 4.5.7 共享版 – 优秀的键盘打字练习软件
  10. 作者:李友元(1986-),男,西南财经大学金融创新期刊编辑部助理编辑
  11. java 获取classpath下文件多种方式
  12. Gridview导出到EXCEL
  13. 句句真研—每日长难句打卡Day6
  14. 计算机组成原理实验数据通路,《计算机组成原理》实验报告——数据通路
  15. CAN协议深度解析-简单易懂协议详解
  16. python名片管理教程_[Python]名片管理系统
  17. rstp 小米网络摄像头_小米哪个家庭摄像头好用?
  18. pinpoint全链路监控安装部署(支持dubbo)
  19. vscode win10笔记本 蓝屏_教你win10电脑蓝屏原因排查及解决方法大全
  20. unique()用法

热门文章

  1. 华东师范大学计算机考研资料汇总
  2. diy服务器个人主机_小型企业及个人用户入门级服务器DIY
  3. Kali学习 | 无线渗透:7.5 Gerix 破解 WEP
  4. Linux怎么去掉secondary地址,有关IP aliasing, Primary address和Secondary address
  5. Cassandra Secondary Index 介绍
  6. nginx反向代理与正向代理
  7. Linux+v4l2自动设置相机曝光时间
  8. Bert源代码(二)模型
  9. 四、字符串(7):重复的子字符串
  10. windows开启nfs_win7专业版怎么开启nfs_win7专业版启用nfs步骤