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

本文档介绍了在Jeecms v9系统中如何自定义标签并结合新创建的Oracle数据库表进行操作。内容包括数据库表创建、映射文件配置、实体类与DAO接口实现、Manager接口及其实现、自定义标签类的编写和配置,以及最终在前台页面的应用和效果展示。

本系统使用的是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">
	<class
		name="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>	
		<property
			name="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;//投稿id
	private 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() {}//空构造
 
	@Override
	protected Class<WeiPeng> getEntityClass() {
		return WeiPeng.class;
	}
 
    @Override
	public 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";
	@Override
	public 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();
	}
 
    @Autowired
	private 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]

最后实现的效果

jeecms v9.3 正式版 安装包 更新日志 1、栏目添加选择模型模板只选择一个报错 2、内容复用待审核查询报错(开源版) 3、根栏目添加内容报错 4、后台页面样式调整 5、后台编辑器分页问题 7、数据统计今日数据没有问题 8、公众号推送菜单和群发微信菜单获取微信端消息返回处理 9、OSS管理添加appkey_secretId后台未解密导致数据存储错误 10、会员中心留言列报错 11、工作流节点空值处理 12、手机模板在静态页生成的情况下url错误处理 13、新增百度主动推送 14、内容删除同时删除静态页(含FTP) 15、栏目和内容静态化调整成只生成前10页 16、activation jcaptcha freemarker JAR部分用户反映下载不了,调整pom采用本地jar 17、栏目没有选择模型模板的情况下,发布内容选择不到模型问题处理 JEECMS简介 JEECMS是一款支持栏目模型、内容模型交叉自定义、以及具备支付和财务结算的内容电商为一体内容管理系统:  对于不懂技术的用户来说,只要通过后台的简单设置即可自定义出集新闻管理、图库管理、视频管理、下载系统、文库管理、政务公开、作品管理、产品发布、供求信息、房屋租售、招聘信息、网络问卷调查及留言板于一体的综合性且不失个性化门户网站。  对于技术达人来说,jeecms不仅提供全部源码,而且在研发之初即全面的考虑了二次开发的高效性和代码的高移植性,是一款非常容易上手和二次开发的产品。  JEECMSv8版本是一款集PC互联网、移动互联网和微信网站于一体的网站群管理系统,jeecmsV7不仅可以通过H5自适应的方式实现手机网页模板,还可以采用v7专享的移动端模板,实现了同一个网站PC端和移动端所展现的风格或者内容一致或完全不一样的效果,让网站更适应用户的浏览体验。  JEECMSv8版本新增作者投稿、投稿管理、投稿佣金收益管理和内容赞赏功能,集成了支付宝和微信多种场景多终端的支付方案,为下一波内容电商从业人员提供技术动力。 JEECMSv8支持PC网站、手机网站、微信网站、手机APP和可移动触摸大屏,一套系统即可完成五端一体化管理的网站建设 JEECMS页面展示:     相关阅读 同类推荐:CMS系统
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值