spring MVC中velocity配置

servlet-context.xml中的配置
      <!-- template view -->
<bean id="velocityConfig"
class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
<property name="resourceLoaderPath" value="/WEB-INF/vm/" />
<property name="velocityProperties">
<props>
<prop key="input.encoding">UTF-8</prop>
<prop key="output.encoding">UTF-8</prop>
<prop key="contentType">text/html;charset=UTF-8</prop>
<prop key="velocimacro.library">common/macro.vm</prop>
</props>
</property>
</bean>
<bean id="velocityViewResolver"
class="org.springframework.web.servlet.view.velocity.VelocityLayoutViewResolver">
<property name="layoutUrl" value="layout/default.vm" />
<property name="cache" value="false" />
<property name="suffix" value=".vm" />
<property name="exposeSpringMacroHelpers" value="true" />
<property name="requestContextAttribute" value="rc"/>
<property name="dateToolAttribute" value="dateTool" />
<property name="numberToolAttribute" value="numberTool" />
<!-- Merge urlBuilderMap to view context for convenience. You can put your tools which must be thread safe. -->
<property name="contentType" value="text/html;charset=UTF-8" />
                 <!--<property name="toolboxConfigLocation" value="/WEB-INF/toolbox.xml"/>可选择-->
</bean>

<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="defaultContentType" value="text/html" />
<!-- not by accept header -->
<property name="ignoreAcceptHeader" value="true"/>
<!-- by extension -->
<property name="mediaTypes">
<map>
    <entry key="xml" value="application/xml" />
<entry key="json" value="application/json" />
</map>
</property>
<property name="viewResolvers">
<list>
                <ref bean="velocityViewResolver"/>
</list>
</property>
  <property name="defaultViews">
<list>
<!-- for application/json -->
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
  
macro.vm内容
#*自定义宏*#

##分页
#macro(showPage $page)
#if($page != "")
<div class="page textR">
#if($page.extInfo&&$page.extInfo.equals("")==false)
<i class="ico-tip"></i>$page.extInfo
#end
每页显示<input id="page-pageSize" class="text w30" type="text" value="$page.pageSize" onKeyup="XUI.form.setPageSize($page.pageSize,this,event);"/>$page.unit,共$page.totalCount$page.unit记录.
#if($page.firstPage == false)
<a class="pre" href="javascript:void(0);" onclick="XUI.form.page($page.previousPage);">上页</a>
<a href="javascript:void(0);" onclick="XUI.form.page(1)">1</a>
#end
#set($pagePos = 2) ##当前页的尾巴长度
#if($page.currentPage>$pagePos+2)
<span>...</span>  ##显示前面的省略号
#end
#foreach($i in [$pagePos..1]) ##增加前面的尾巴
#if($page.currentPage - $i > 1)
#set($pageIndex= $page.currentPage - $i)
<a href="javascript:void(0);" onclick="XUI.form.page($pageIndex)">$pageIndex</a>
#end
#end
<a class="current">$page.currentPage</a>##显示当前页号
#foreach($i in [1..$pagePos]) ##增加后面的尾巴
#if($page.pageCount - $page.currentPage - $i > 0)
#set($pageIndex= $page.currentPage + $i)
<a href="javascript:void(0);" onclick="XUI.form.page($pageIndex)">$pageIndex</a>
#end
#end
#if($page.pageCount - $page.currentPage > $pagePos+1)
<span>...</span>##显示后面的省略号
#end
#if($page.hasNextPage())
<a href="javascript:void(0);" onclick="XUI.form.page($page.pageCount)">$page.pageCount</a>
<a class="next" href="javascript:void(0);" onclick="XUI.form.page($page.nextPage)">下页</a>
#end
#if($page.pageCount > 1)
<a class="pre" href="javascript:void(0);" onclick="XUI.form.showAll($page.totalCount);">显示全部</a>
#end
</div>
#end
#end


##排序
#macro(sorting $obj $field)
#if($obj && $obj.orderField == $field)
class="sorting_$obj.orderFieldType" data-orderFieldType="$obj.orderFieldNextType"
#else
class="sorting" data-orderFieldType="DESC"
#end
data-orderField="$field"
#end
查询list页面分页使用如下:
<!-- 分页栏 -->
#showPage($!{page})

layout/default.vm的内容
$screen_content

猜你喜欢

转载自bitcarter.iteye.com/blog/2280900