以@cms_friendlink_list 为例对应的类 class="com.marcms.cms.action.directive.CmsFriendlinkListDirective",通过查看类代码分析标签使用时候用到的参数(输入和输出)。
com.jeecms.cms.action.directive包下应该是标签所在的目录。
打开WEB-INF/config目录下的jeecms-context.xml配置文件,可以看到有如下bean的配置
<!--标签-->
<bean id="cms_pagination" class="com.marcms.cms.action.directive.PaginationDirective"/>
<bean id="cms_channel_list" class="com.marcms.cms.action.directive.ChannelListDirective"/>
<bean id="cms_channel_page" class="com.marcms.cms.action.directive.ChannelPageDirective"/>
<bean id="cms_channel" class="com.marcms.cms.action.directive.ChannelDirective"/>
<bean id="cms_content" class="com.marcms.cms.action.directive.ContentDirective"/>
<bean id="cms_content_list" class="com.marcms.cms.action.directive.ContentListDirective"/>
<bean id="cms_content_page" class="com.marcms.cms.action.directive.ContentPageDirective"/>
<bean id="cms_tag_list" class="com.marcms.cms.action.directive.ContentTagListDirective"/>
<bean id="cms_tag_page" class="com.marcms.cms.action.directive.ContentTagPageDirective"/>
<bean id="cms_topic_list" class="com.marcms.cms.action.directive.CmsTopicListDirective"/>
<bean id="cms_topic_page" class="com.marcms.cms.action.directive.CmsTopicPageDirective"/>
<bean id="cms_comment_list" class="com.marcms.cms.action.directive.CmsCommentListDirective"/>
<bean id="cms_comment_page" class="com.marcms.cms.action.directive.CmsCommentPageDirective"/>
<bean id="cms_guestbook_ctg_list" class="com.marcms.cms.action.directive.CmsGuestbookCtgListDirective"/>
<bean id="cms_guestbook_list" class="com.marcms.cms.action.directive.CmsGuestbookListDirective"/>
<bean id="cms_guestbook_page" class="com.marcms.cms.action.directive.CmsGuestbookPageDirective"/>
<bean id="cms_vote" class="com.marcms.cms.action.directive.CmsVoteDirective"/>
<bean id="cms_friendlink_ctg_list" class="com.marcms.cms.action.directive.CmsFriendlinkCtgListDirective"/>
<bean id="cms_friendlink_list" class="com.marcms.cms.action.directive.CmsFriendlinkListDirective"/>
<bean id="cms_lucene_list" class="com.marcms.cms.lucene.LuceneDirectiveList"/>
<bean id="cms_lucene_page" class="com.marcms.cms.lucene.LuceneDirectivePage"/>
<bean id="cms_advertising" class="com.marcms.cms.action.directive.CmsAdvertisingDirective"/>
<bean id="cms_vote_list" class="com.marcms.cms.action.directive.CmsVoteListDirective"/>
<bean id="cms_model" class="com.marcms.cms.action.directive.CmsModelDirective"/>
<bean id="cms_score_group" class="com.marcms.cms.action.directive.ScoreGroupDirective"/>
<!--后台权限标签-->
<bean id="cms_perm" class="com.marcms.cms.web.PermistionDirective"/>
这里是bean对应的类,<bean id="cms_friendlink_list" class="com.marcms.cms.action.directive.CmsFriendlinkListDirective"/>为例,打开类文件,看到以下代码
/**
* 友情链接类别列表标签
*/
public class CmsFriendlinkListDirective implements TemplateDirectiveModel {
/**
* 输入参数,站点ID。
*/
public static final String PARAM_SITE_ID = "siteId";
/**
* 输入参数,类别ID。
*/
public static final String PARAM_CTG_ID = "ctgId";
/**
* 输入参数,是否显示。
*/
public static final String PARAM_ENABLED = "enabled";
其中3个final String对应的就是输入参数(分别是
siteId,ctgId,enabled),这三个输入参数对应的值的范围可以从下列代码中分析得到:
Integer siteId = getSiteId(params);
if (siteId == null) {
siteId = FrontUtils.getSite(env).getId();
}
Integer ctgId = getCtgId(params);
Boolean enabled = getEnabled(params);
if (enabled == null) {
enabled = true;
}
分别对应整型,整型,逻辑类型,以及某些参数的默认值(这些值在使用标签时候可以不写初始值)。
对应输出参数查看以下代码:
List<CmsFriendlink> list = cmsFriendlinkMng.getList(siteId, ctgId,
enabled);
Map<String, TemplateModel> paramWrap = new HashMap<String, TemplateModel>(
params);
paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list));
其中 paramWrap.put是将输出的数值放入到MAP中(paramWrap.put(OUT_LIST, DEFAULT_WRAPPER.wrap(list))),list存放的就是需要输出的对象(类型是List的CmsFriendlik对象)
OUT_LIST 值为
tag_list,在com.marcms.common.web.freemarker包的类
DirectiveUtils 中声明为tag_list
/**
* 输出参数:对象数据
*/
public static final String OUT_BEAN = "tag_bean";
/**
* 输出参数:列表数据
*/
public static final String OUT_LIST = "tag_list";
/**
* 输出参数:分页数据
*/
public static final String OUT_PAGINATION = "tag_pagination";
/**
* 参数:是否调用模板。
*/
public static final String PARAM_TPL = "tpl";
/**
* 参数:次级模板名称
*/
public static final String PARAM_TPL_SUB = "tplSub";
输出的属性名称为tag_list,对应的值是List类型的CmsFriednlink对象.CmsFriendlink extends BaseCmsFriendlink。说明CmsFriendlink (可以理解为entity.assist)是继承 BaseCmsFriendlink类(最终的实体类,它对应属性就是tag_list所对应的属性值)
BaseCmsFriendlink类代码如下:
* @hibernate.class
* table="jc_friendlink"
*/
public abstract class BaseCmsFriendlink implements Serializable {
public static String REF = "CmsFriendlink";
public static String PROP_DOMAIN = "domain";
public static String PROP_EMAIL = "email";
public static String PROP_DESCRIPTION = "description";
public static String PROP_LOGO = "logo";
public static String PROP_SITE = "site";
public static String PROP_ENABLED = "enabled";
public static String PROP_VIEWS = "views";
public static String PROP_CATEGORY = "category";
public static String PROP_PRIORITY = "priority";
public static String PROP_NAME = "name";
public static String PROP_ID = "id";
这里可以看到输出tag_list中可以访问的字段值,(有setter的可以访问)
再看一下这个标签在html模板中的用法:
[@cms_friendlink_list ctgId='#{id}']
[#list tag_list as link]
<div style="margin-left:1.5%; float:left;">
<a href="${link.domain}" onclick="$.get('${base}/friendlink_view.jspx?id=${link.id}')" target="_blank">${link.name}</a>
</div>
[/#list]
[/@cms_friendlink_list]
ctgId 是输入参数,tag_list是输出参数 类型是list , link代表tag_list中的每个对象 ,这个对象对应的属性值link.domain,link.id,link.name。其中输入通过上面的分析可以有3个,另外2个可以不写有默认值;输出参数有若干个,只用到了3个。
还有几个问题没有找到:
1。@cms_friednlink_list是如何和cms_friednlink_list类联系在一起的???(猜测是通过properties文件联系的)
2。在WEB-INF/config/jeecms/jeecms.properties文件里面有一句
directive.cms_friendlink_list=cms_friendlink_list 不知道什么意思,是不是和将@cms_friednlink_list是如何和cms_friednlink_list类联系在一起??在config/下的jeecms-server-front.xm里面关于(前台)freemaker的配置有以下代码:
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<!--获取标签配置-->
<property name="freemarkerVariables" value="#{propertyUtils.getBeanMap('directive.')}"/>
是不是这个?freemakerconfig还是不熟悉,其中propertyUtils应该是个类从jeecms.properties文件找到directive.
cms_friendlink_list对应的cms_friendlink_list
类???
后台关于freemaker的配置有如下代码:
<entry key="cms_perm" value-ref="cms_perm"/>
<entry key="text_cut" value-ref="text_cut"/>
<entry key="html_cut" value-ref="html_cut"/>
<entry key="cms_content_list" value-ref="cms_content_list"/>
<entry key="cms_content_page" value-ref="cms_content_page"/>
这里也是标签吗???
3.WEB-INF/directive/link/l_.txt是做什么的???
4。/WEB-INF/ftl/jeecms/index.ftl
as p,/WEB-INF/ftl/spring.ftl as s 在哪里使用的???
要解决上面的问题要看freemaker的文档了!!!
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
例如,当用户访问一个文章列表页时,Jeecms会根据URL解析出相应的栏目ID,然后使用`{dedeArcList}`标签从`dede_archives`表中查询该栏目下的文章,并按设定的排序规则展示。 总结来说,Jeecms的标签系统是其强大之...
本文将详细解析Jeecms 3.x版本中的部分核心标签及其使用方法。 1. 页面处理时间标签:`[@process_time/]` 这个标签用于显示页面的处理时间,有助于开发者分析页面性能。它会计算并显示从服务器接收到请求到响应完成...
《Jeecms_v2012标签使用及模板配置详解》 Jeecms_v2012是一款功能强大的内容管理系统,其核心特性在于灵活的标签系统,使得网站模板的定制和管理变得简单易行。本篇文章将深入解析Jeecms_v2012中的主要标签及其在...
**初始化参数解析**:`web.xml`中有一段关键的配置用于指定上下文配置文件的位置,例如`contextConfigLocation`参数指定了多个XML文件的位置,其中包括了`jeecms-context.xml`,该文件主要用于初始化Jeecms中的标签...
`ArtiList`标签是JEECMS系统中非常实用且强大的工具,它不仅能够帮助快速构建文章列表,还能通过丰富的参数配置实现多样化的展示效果。掌握这些参数的使用方法,将有助于开发者和网站管理员更加高效地管理和优化网站...
#### 三、Jeecms2012标签使用 Jeecms2012提供了丰富的标签来帮助用户自定义显示内容和样式。这些标签大致分为两类: **预设样式标签** 此类标签封装了大量的常见布局样式,例如文章列表、图文混排、滚动条等,通过...
**JeeCMS测试站点使用文档** ...通过以上对JeeCMS测试站点使用文档的解析,你可以全面了解如何操作和管理JeeCMS。在实际应用中,结合提供的文档和实践操作,将使你更加熟练地驾驭这个强大的内容管理系统。
Jeecms 3.x 标签是用于构建动态网站内容的一种强大的工具,它允许开发者通过简单的标签语法来实现复杂的功能,而无需编写大量的Java代码。以下是对Jeecms 3.x 标签的详细解释: 1. 页面模板包含标签 `[#include ".....
6. **关联和多对多关系表**:在复杂的业务场景下,Jeecms 可能会使用中间表来处理多对多的关系,如用户与角色的关联、文章与标签的关系等。 7. **其他辅助表**:例如,图片、文件管理相关的表,或者是系统设置、...
### JEECMS 2012 系统使用手册...以上总结了JEECMS 2012系统使用手册的关键知识点,涵盖了从系统特性到后台管理、标签说明等多个方面。对于初次接触JEECMS的用户而言,这些信息有助于快速理解和掌握该系统的使用方法。
本文将深入解析Jeecms中的标签使用方法,特别是针对默认站点的配置进行详细介绍,帮助用户更好地理解和掌握Jeecms的核心功能。 #### 1. 首页导航标签 首页导航是任何网站的重要组成部分,它不仅影响用户体验,还...
在整个安装流程中,Jeecms通过Java Servlet技术处理HTTP请求,使用JDBC进行数据库操作,确保了系统与数据库之间的交互。源码的这部分展示了Jeecms如何灵活地管理配置,以及如何根据用户输入和系统环境执行不同的安装...
### JeeCMS导入MyEclipse的关键步骤与技术解析 #### 引言 JeeCMS是一款基于Java技术构建的开源内容管理系统(CMS),以其强大的功能、灵活性及可扩展性著称,广泛应用于企业级网站的搭建与管理。对于开发者而言,...
2. **标签参数**:对每个标签的参数进行解析,阐述其功能和设置方式。 3. **自定义标签**:指导开发者如何创建自己的标签,以便于实现特定的功能需求。 4. **使用案例**:提供实际应用场景,帮助理解标签的实际...
分页的新闻列表,使用`<jeecms:newsList>`标签配合`pageNo`参数实现,可以控制每页显示的新闻数量。 ### 12、带缩略图分页内容列表 `<jeecms:contentList>`标签支持显示带有缩略图的内容列表,并且可以进行分页...
前台页面的跳转涉及到视图解析,JeecMS可能使用FreeMarker或Velocity作为模板引擎,结合Struts2的动作结果来决定展示哪个页面。 11. **标签解读** JeecMS中的标签通常用于动态渲染内容,如文章列表、分类信息等。...
### JEECMS V7 数据字典详解 #### 一、概述 JEECMS是一款基于Java技术构建的内容管理系统(Content Management System, CMS),适用于多种网站应用场景,包括但不限于新闻资讯、企业门户等。本文档针对JEECMS V7版本...