JEECMS 自定义标签
CMS 是”Content Management System” 的缩写,意为” 内容管理系统”。 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。 自定义标签 [mycontent_list] 实现步骤:
创建 jc_mycontent 的表
-- Create table
create table JC_MYCONTENT
(
id NUMBER not null,
title VARCHAR2(),
content VARCHAR2()
)
tablespace CMS
pctfree
initrans
maxtrans
storage
(
initial 64K
minextents
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table JC_MYCONTENT
add constraint PK_ID primary key (ID)
using index
tablespace CMS
pctfree
initrans
maxtrans ;
创建实体类
package com.jeecms.cms.entity.main; public class MyContent {
private Integer id;
private String title;
private String content; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getTitle() {
return title;
} public void setTitle(String title) {
this.title = title;
} public String getContent() {
return content;
} public void setContent(String content) {
this.content = content;
} public MyContent(Integer id, String title, String content) {
super();
this.id = id;
this.title = title;
this.content = content;
} public MyContent() {
super();
} }
接下来是配置 hibernate 中 jc_mycontent 表的配置文件
<?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>
持久层接口
package com.jeecms.cms.dao.main; import java.util.List; import com.jeecms.cms.entity.main.MyContent; public interface MyContentDao {
public List<MyContent> getList();
}
持久层实现类
package com.jeecms.cms.dao.main.impl; import java.util.List; import org.springframework.stereotype.Repository; import com.jeecms.cms.dao.main.MyContentDao;
import com.jeecms.cms.entity.main.MyContent;
import com.jeecms.common.hibernate4.Finder;
import com.jeecms.common.hibernate4.HibernateBaseDao; @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;
}
}
业务层接口
package com.jeecms.cms.manager.main; import java.util.List; public interface MyContentMng {
public List getList();
}public interface MyContentMng {
public List getList();
}
业务层实现类
package com.jeecms.cms.manager.main.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import com.jeecms.cms.dao.main.MyContentDao;
import com.jeecms.cms.entity.main.MyContent;
import com.jeecms.cms.manager.main.MyContentMng;
import com.jeecms.cms.service.ContentListener; @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)。 package com.jeecms.cms.action.directive.abs; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import com.jeecms.cms.manager.main.MyContentMng; import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveModel;
import freemarker.template.TemplateException; public abstract class AbstractMyContentDirective implements TemplateDirectiveModel {
protected Object getData(Map params, Environment env) throws TemplateException {
return myContentMng.getList();
} @Autowired
protected MyContentMng myContentMng;
}
标签工具类 DirectiveUtils 下定义输出参数: MYOUT_LIST
public static final String MYOUT_LIST = "mytag_list";
自定义标签中最重要的类继承上边的抽象类
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.action.directive.abs.AbstractMyContentDirective;
import com.jeecms.cms.entity.main.MyContent; import static com.jeecms.common.web.freemarker.DirectiveUtils.MYOUT_LIST;
import com.jeecms.common.web.freemarker.DefaultObjectWrapperBuilderFactory;
import com.jeecms.common.web.freemarker.DirectiveUtils;
import com.jeecms.core.entity.CmsSite;
import com.jeecms.core.web.util.FrontUtils; import freemarker.core.Environment;
import freemarker.template.TemplateDirectiveBody;
import freemarker.template.TemplateException;
import freemarker.template.TemplateModel; public class MyContentListDirective extends AbstractMyContentDirective {
/**
* 模板名称
*/
public static final String TPL_NAME = "mycontent_list"; @SuppressWarnings("unchecked")
public void execute(Environment env, @SuppressWarnings("rawtypes") 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, DefaultObjectWrapperBuilderFactory.getDefaultObjectWrapper()
.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);
} @SuppressWarnings("unchecked")
protected List<MyContent> getList(Map<String, TemplateModel> params, Environment env)
throws TemplateException {
return myContentMng.getList();
}
}
在 jeecms-context.xml 中声明标签
<bean id="cms_mycontent_list" class="com.jeecms.cms.action.directive.MyContentListDirective"/>
在 jeecms-context.xml 中注入 DAO
<bean id="myContentDao" class="com.jeecms.cms.dao.main.impl.MyContentDaoImpl"/>
在 jeecms-context.xml 中注入 Manager
<bean id="myContentMng" class="com.jeecms.cms.manager.main.impl.MyContentMngImpl"/>
配置文件 jeecms-servlet-front.xml 中有一段对标签的配置
jeecms.properties 中配置标签名
directive.cms_mycontent_list=cms_mycontent_list
新建模板
WEB-INF\t\cms\www\oa\tag 下新建模板 mycontent_list.html, 并加入如下代码 (里边也可以自己添加一些样式,可参考 WEB-INF\t\cms_sys_defined\style_list 下样式文件) [#list mytag_list as a]
<li>
<a href="${a.title}">"${a.content}"</a>
</li>
[/#list]
调用代码
[@cms_mycontent_list]
[#list mycontent_list as a]
<li>
<a href="${a.title}">"${a.content}"</a>
</li>
[/#list]
[/@cms_mycontent_list]
通过以上这些代码,实现将自己的表 jc_mycontent 中的数据查询并显示在页面上 本文作者: IIsKei
本文链接: http://www.iskei.cn/posts/25712.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
CMS 是”Content Management System” 的缩写,意为” 内容管理系统”。 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场。对于内容管理,业界还没有一个统一的定义,不同的机构有不同的理解。
自定义标签 [mycontent_list] 实现步骤:
创建 jc_mycontent 的表
1 |
-- Create table |
创建实体类
1 |
package com.jeecms.cms.entity.main; public class MyContent { |
接下来是配置 hibernate 中 jc_mycontent 表的配置文件
1 |
<?xml version="1.0"?> |
持久层接口
1 |
package com.jeecms.cms.dao.main; import java.util.List; import com.jeecms.cms.entity.main.MyContent; public interface MyContentDao { |
持久层实现类
1 |
package com.jeecms.cms.dao.main.impl; import java.util.List; import org.springframework.stereotype.Repository; import com.jeecms.cms.dao.main.MyContentDao; |
业务层接口
1 |
package com.jeecms.cms.manager.main; import java.util.List; public interface MyContentMng { |
业务层实现类
1 |
package com.jeecms.cms.manager.main.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; |
标签类的抽象类
最主要的就是 getData 这个方法,以及绑定业务层 (其中也可以添加多种查询方法,可参考类 AbstractContentDirective)。
1 |
package com.jeecms.cms.action.directive.abs; import java.util.Map; import org.springframework.beans.factory.annotation.Autowired; import com.jeecms.cms.manager.main.MyContentMng; import freemarker.core.Environment; |
标签工具类 DirectiveUtils 下定义输出参数: MYOUT_LIST
1 |
public static final String MYOUT_LIST = "mytag_list"; |
自定义标签中最重要的类继承上边的抽象类
1 |
package com.jeecms.cms.action.directive; import java.io.IOException; |
在 jeecms-context.xml 中声明标签
1 |
<bean id="cms_mycontent_list" class="com.jeecms.cms.action.directive.MyContentListDirective"/> |
在 jeecms-context.xml 中注入 DAO
1 |
<bean id="myContentDao" class="com.jeecms.cms.dao.main.impl.MyContentDaoImpl"/> |
在 jeecms-context.xml 中注入 Manager
1 |
<bean id="myContentMng" class="com.jeecms.cms.manager.main.impl.MyContentMngImpl"/> |
配置文件 jeecms-servlet-front.xml 中有一段对标签的配置
jeecms.properties 中配置标签名
1 |
directive.cms_mycontent_list=cms_mycontent_list |
新建模板
WEB-INF\t\cms\www\oa\tag 下新建模板 mycontent_list.html, 并加入如下代码 (里边也可以自己添加一些样式,可参考 WEB-INF\t\cms_sys_defined\style_list 下样式文件)
1 |
[#list mytag_list as a] |
调用代码
1 |
[@cms_mycontent_list] |
通过以上这些代码,实现将自己的表 jc_mycontent 中的数据查询并显示在页面上
打赏
- 本文作者: IIsKei
- 本文链接: http://www.iskei.cn/posts/25712.html
- 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
JEECMS 自定义标签的更多相关文章
- JEECMS自定义标签
查看JEECMS的源代码发现开发者版本还没有类似现成的统计标签,一种解决的办法是使用现有的JEECMS标签,像这样Struts( [@cms_content_list channel=id]${tag ...
- Jeecms自定义标签用法[单个内容]
1.com.jeecms.cms.action.directive包下建立自己的标签类
- [原创]JEECMS 自定义标签调用广告版位下的所有广告(利用广告管理管理首页幻灯片)
JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3'] <img src=&quo ...
- JEECMS自定义标签开发步骤2
JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3'] <img src=&quo ...
- JEECMS自定义标签开发步骤
JEECMS自带的只有[@cms_advertising]标签,并且官方没有给文档,用法: [@cms_advertising id='3'] <img src=&quo ...
- JEECMS站群管理系统-- 自定义标签及使用自己创建的表的实现过程
下面是我自己定义的标签mycontent_list 首先,在数据库里创建了一个jc_mycontent的表,其中有id,title,content三个字段 其次,创建了一个实体类 public cla ...
- 自己动手编写JEECMS自定义栏目统计标签
今天想在给Java客二级版面加入栏目文章统计效果,如下图, 查看JEECMS的源代码发现开发者版本还没有类似现成的统计标签,一种解决的办法是使用现有的JEECMS标签,像这样Struts( [@cms ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
随机推荐
- 最接近神的人_NOI导刊2010提高(02)
题目描述 破解了符文之语,小FF开启了通往地下的道路.当他走到最底层时,发现正前方有一扇巨石门,门上雕刻着一幅古代人进行某种活动的图案.而石门上方用古代文写着“神的殿堂”.小FF猜想里面应该就有王室的 ...
- 字符串KMP算法
讲解:http://blog.csdn.net/starstar1992/article/details/54913261 #include <bits/stdc++.h> using n ...
- 原来腾迅的QQ号竟然是个int变量
今天有个人加我好友,我一点开申请界面 我惊异了.... 我擦,号码竟然是个负数,但是人物资料里面却是个正数 有编程经验的人,一眼就看得出来原因.而且一眼就看得出来,它们是什么 1857918296 + ...
- Red Hat Linux安装vsftpd
一.安装分区方案: (1)交换分区,两倍内存 (2)/boot分区 (3)/剩余的所有空间语言选择English(英语) 二. 配置IPIP地址.子网掩码: 编辑 /etc/sysconfig/net ...
- D3.js比例尺 定量比例尺 之 线性比例尺(v3版本)
定量比例尺 : 数学上有函数的概念,不是编程中所说的函数,如线性函数.指数函数.对数函数等,而指的是一个量随着另一个量的变化而变化.例如有一下线性函数 : y=2x+1该函数在二维坐标系中绘制出来的图 ...
- vue echart例——柱状图及高度自适应
1.安装 npm install echarts -s 2.例——点击tab切换时柱状图重绘,高度根据返回数据设置. <template> <div> <ul id=&q ...
- pandas中axis的含义
定义一个dataframe: >>> df a b0 1 31 2 4 现在看两种用法: 1.求行的均值 >>> df.mean(axis=1)0 2.01 3.0 ...
- coco2dx android package..
/Users/chong/Documents/engine/cocos2d-x-3.15.1/tools/cocos2d-console/bin/cocos compile -p android -m ...
- ac与ap同步分析
1 ApStatusRequest : ap把自己的状态发过来做请求 就相当于自我介绍 网关上抓包 : tcpdump -ni br-lan tcp port 8090 -Avv / -w po ...
- Windows route
ROUTE [-f] [-p] [-4|-6] command [destination] [MASK netmask] [gateway] [METRIC met ...