spring mvc+velocity中和jstl中的<c:import>类似的实现

阿信sxq 发布于 2015/11/13 14:54
阅读 912
收藏 0

初次使用velocity,将原先使用jsp的页面转为使用velocity进行页面展现,使用了spring mvc。

现在遇到一个问题,就是页面上需要发起一个请求去获取后台一个链接的结果,原先时使用的jstl实现,代码是

<c:import url="/menu/foot"/>
现在使用velocity该使用什么办法啊,网上有说使用velocity-tool的ImportTool,可是我反复按照官网的说明,把spring mvc的配置文件也改了,但是貌似没有对,希望有了解的来说说啊。

下面是一些相关的配置,目前除了上面说道的那个问题,其他是能够运行的,

spring mvc的配置:

<bean class="org.springframework.web.servlet.view.velocity.VelocityViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.velocity.VelocityToolboxView" />
        <property name="prefix" value="" />
        <property name="suffix" value=".vm" />
        <property name="contentType" value="text/html;charset=UTF-8" />
        <property name="toolboxConfigLocation" value="/WEB-INF/velocity-toolbox.xml" />
    </bean>

    <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer">
        <property name="resourceLoaderPath" value="/WEB-INF/velocity/" />
        <property name="velocityProperties">
            <props>
                <!-- 开发时设置为false,正式运行设置为true -->
                <prop key="file.resource.loader.cache">false</prop>
                <prop key="file.resource.loader.modificationCheckInterval">0</prop>
                <!-- 中文乱码 -->
                <prop key="input.encoding">UTF-8</prop>
                <prop key="output.encoding">UTF-8</prop>
            </props>
        </property>
    </bean>
velocity-toolbox.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<tools>
    <toolbox scope="request">
        <tool class="org.apache.velocity.tools.view.LinkTool" />
        <tool>
            <key>import</key>
            <scope>request</scope>
            <class>org.apache.velocity.tools.view.ImportTool</class>
        </tool>
    </toolbox>
</tools>
页面上我打算这样用

$import.read("/menu/foot")
原先jstl的时候是这样的

<c:import url="/menu/foot"/>



加载中
0
东胜神洲
东胜神洲

<c:import /> 的本质不就是在服务器端 jsp 编译时加载一个文件么?。

不就是相当于 velocity 的 #include,#parse 这样的指令吗?


东胜神洲
东胜神洲
回复 @阿信SXQ : <c:import /> 同样也不能发起一个请求,除非 url 是一个完整的路径。。当然 <s:action > 是可以,但是它的实现原理,就是直接执行了 action 类方法,而不是通过请求来完成。。换句话来说,不借助于 ajax, 无法通过请求来实现。
阿信sxq
阿信sxq
用了那些指令,但是没有起到效果,这是不是和包含的内容是一个spring mvc 的请求有关系啊
0
雨翔河
雨翔河

使用velocitytool可以在页面执行java方法,为什么要发起请求,发起请求的话这么不直接用ajax?

雨翔河
雨翔河
velocity有layout进行布局,详情百度一下答案就有了哦
阿信sxq
阿信sxq
我想的是像加载页脚版权声明这种做成一个请求,这样就只需要在一个地方维护了。用velocitytool的话,你看看我的配置有没有哪里有问题啊,现在是不报错,但是就是不出来
0
Tanweijie
Tanweijie
http://my.oschina.net/tanweijie/blog/270613 
返回顶部
顶部