文档章节

JEECMS站群管理系统-- 自定义标签及使用自己创建的表的实现过程

思维80
 思维80
发布于 2015/05/24 15:10
字数 764
阅读 13
收藏 0

下面是我自己定义的标签mycontent_list 
首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 
其次,创建了一个实体类

1
2
3
4
5
6
7
8
public  class  MyContent {
private  static  final  long  serialVersionUID = 1L;
private  Integer id;
private  String title;
private  String content;
public  MyContent () {
super ();
}

……get set方法 

接下来是配置hibernate中jc_mycontent表的配置文件

1
2
3
4
5
6
7
8
9
10
11
<?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" >
< class  name= "MyContent"  table= "jc_mycontent" >
<meta attribute= "sync-DAO" > false </meta>
<cache usage= "read-write" />
<id name= "id"  type= "java.lang.Integer"  column= "id" ><generator  class = "identity" /></id>
<property name= "title"  column= "title"  type= "java.lang.String"  not- null = "true"  />
<property name= "content"  column= "content"  type= "java.lang.String"  not- null = "true"  />
</ class >
</hibernate-mapping>

与数据库交互的持久层接口

1
2
3
public  interface  MyContentDao {
public  List<MyContent> getList();
}

持久层实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Repository //持久层
public  class  MyContentDaoImpl  extends  HibernateBaseDao<MyContent, Integer>
implements  MyContentDao {
@SuppressWarnings ( "unchecked" )
public  List<MyContent> getList(){
return  find(byNothing());
}
private  Finder byNothing(){
Finder f = Finder.create();
f.append( "from MyContent" ); //可以在此处添加查询条件或者添加各种方法进行动态查询
f.setCacheable( true );
return  f;
}
 
@Override
protected  Class<MyContent> getEntityClass() {
return  MyContent. class ;
}
}


业务层接口 
public interface MyContentMng { 
public List<MyContent> getList(); 

业务层实现类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Service //业务层
@Transactional
public  class  MyContentMngImpl  implements  MyContentMng {
 
@Transactional (readOnly =  true ) //配置事务为只读
public  List<MyContent> getList(){
return  myContentDao.getList();
}
private  MyContentDao myContentDao;
@Autowired //自动绑定
public  void  setMyContentDao(MyContentDao myContentDao) {
this .myContentDao = myContentDao;
}
private  List<ContentListener> listenerList;
@Autowired
public  void  setListenerList(List<ContentListener> listenerList) {
this .listenerList = listenerList;
}
}


标签类的抽象类,最主要的就是getData这个方法,以及绑定业务层,其中可以添加多种查询方法。可参考类AbstractContentDirective

1
2
3
4
5
6
7
8
9
public  abstract  class  AbstractMyContentDirective  implements
TemplateDirectiveModel {
protected  Object getData(Map<String, TemplateModel> params, Environment env)
throws  TemplateException {
return  myContentMng.getList();
}
@Autowired
protected  MyContentMng myContentMng;
}

自定义标签中最重要的类继承上边的抽象类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public  class  MyContentListDirective  extends  AbstractMyContentDirective {
/**
  * 模板名称
  */
public  static  final  String TPL_NAME =  "mycontent_list" ;
@SuppressWarnings ( "unchecked" )
public  void  execute(Environment env, Map params, TemplateModel[] loopVars,
TemplateDirectiveBody body)  throws  TemplateException, IOException {
//获取站点
CmsSite site = FrontUtils.getSite(env);
//获取内容列表
List<MyContent> list = getList(params, env);
Map<String, TemplateModel> paramWrap =  new  HashMap<String, TemplateModel>(params);
//OUT_LIST值为tag_list,将内容列表放入其中
paramWrap.put(MYOUT_LIST, DEFAULT_WRAPPER.wrap(list));
//将params的值复制到variable中
Map<String, TemplateModel> origMap = DirectiveUtils.addParamsToVariable(env, paramWrap);
//没有采用默认的模板,直接采用自己写的简单的模板(mycontent_list.html)
FrontUtils.includeTpl(TPL_NAME, site, params, env);
//将variable中的params值移除
DirectiveUtils.removeParamsFromVariable(env, paramWrap, origMap);
}
protected  List<MyContent> getList(Map<String, TemplateModel> params,
Environment env)  throws  TemplateException {
return  myContentMng.getList();
}
}


样式模板mycontent_list.html内容,里边可以自己添加一些样式,可参考\t\cms_sys_defined\style_list下样式文件 
[#list mytag_list as a] 
<li><a href="${a.title}"><font color='blue'>"${a.content}"</font></a></li> 
[/#list] 

首页里加入如下代码 
[@cms_mycontent_list] 
   <ul class="topnews"> 
   </ul> 
[/@cms_mycontent_list] 
通过以上这些代码,可以实现将自己的表jc_mycontent中的数据查询并显示在页面上

本文转载自:http://blog.csdn.net/u012151556/article/details/44901471

思维80
粉丝 8
博文 111
码字总数 42366
作品 0
西安
程序员
私信 提问
Java 网站内容管理系统--JEECMS

JEECMS 产品介绍 JEECMS 内容管理系统是国内 Java 开源 CMS 行业知名度最高、用户量最大的站群管理系统。 SpringMVC 3 + Spring 3+ Hibernate 3 + Freemarker 技术架构 基于 Java 技术开发,...

jeecms
2012/09/03
46.3K
9
jeecms学习

JDK5+TOMCAT5.5+MYSQL5 及以上,具体安装过程请参考官方网站的图文说明 (《JDK+TOMCAT+MYSQL 图文安装指南》,网址是http://www.jeecms.com/hjdj/760.htm ) 将解压后得到的jeecms-3.0.2-fina...

雷域
2016/08/09
70
0
JEECMS v8.1 发布,首个微信小程序开源发布

JEECMSv8.1是一款支持微信小程序、栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:jeecms为开发各类微信小程序提供了完善的API支持。 对于不懂技术的用...

jeecms
2017/01/12
6.3K
20
JEECMS v8 发布,java 开源 CMS 系统

JEECMSv8 是国内java开源CMS行业知名度最高、用户量最大的站群管理系统,支持栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体: 对于不懂技术的用户来说,只要通过后...

jeecms
2016/10/17
9.1K
18
java开源CMS系统-JEECMS v2012版发布

jeecms v2012版是一款集新闻管理、图库管理、视频管理、下载系统、作品管理、产品发布及留言板于一体的综合性CMS系统。从2012版起,jeecms将更注重用户体验、系统性能和实际应用的研发,让j...

jeecms
2011/12/20
4K
7

没有更多内容

加载失败,请刷新页面

加载更多

rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0
简述TCP的流量控制与拥塞控制

1. TCP流量控制 流量控制就是让发送方的发送速率不要太快,要让接收方来的及接收。 原理是通过确认报文中窗口字段来控制发送方的发送速率,发送方的发送窗口大小不能超过接收方给出窗口大小。...

鏡花水月
今天
9
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
914
11
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部