struts2的 component标签(非表单标签)

component标签

component标签用于使用自己的自定义组件,这是一个非常灵活的用法,如果经常需要使用某个效果片段,就可以考虑将这个效果片段定义成一个自定义组件,然后在页面中使用component标签来使用该自定义组件。

因为使用自定义组件还是基于主题、模板管理的,因此在使用component标签时,常常需要指定如下三个属性

  1. theme:自定义组件所使用的主题,如果不指定该属性,默认使用xhtml主题。
  2. templateDir:指定自定义组件的主题目录,如果不指定,默认使用系统的主题目录,即template目录。
  3.  template:指定自定义组件所使用的模板。

除此之外,还可以在cmponent标签内使用param子标签,子标签表示向该标签模板中传入额外的参数。如果希望在模板中取得该参数,总是采用如下形式:$parameters.paramname,或者$parameters['paramname']。

提示:自定义的模板文件可以采用FreeMarker、JSP和Velocity三种技术来书写。


采用JSP模板的例子:

1.模板文件所在的文件目录结构:




2.  *.jsp页面的片段:

<div id="box-questions">
                <s:iterator value="paperQuestions" id="groupMap">
                         <s:iterator value="#groupMap['QUESTION_LIST']" id="qstMap">
                               <s:component templateDir="/includes" theme="custom" template="question.jsp">
                                        <s:param name="mode">exam</s:param>
                                        <s:param name="questionType" value="#qstMap['QUESTION'].questionType" />
.                                        ........................................................................
                               </s:component>
                        </s:iterator>
               </s:iterator>

</div>


3.  模板页面:

question.jsp(整体结构完整,无其他标签体)

<%@ page language="java" pageEncoding="UTF-8"%>
       <%@ taglib uri="/struts-tags" prefix="s"%>
        <s:if test="parameters.questionType == @cn.epis.ets.pojo.Question@QT_SINGLE_SELECT">
                <s:component templateDir="/includes" theme="custom" template="single_select.jsp">
                     <s:param name="mode" value="parameters.mode" />
                       .......................................................................................
              </s:component>
          </s:if>
         <s:elseif test="parameters.questionType == @cn.epis.ets.pojo.Question@QT_MULTI_SELECT">

<!--templateDir路径加个template目录就是multi_select.jsp的 路径-->
                   <s:component templateDir="/includes" theme="custom" template="multi_select.jsp">
                   <s:param name="mode" value="parameters.mode" />
..................................................................................................
                  </s:component>
          </s:elseif>











  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值