【问题标题】:What is the best practice to put Velocity properties when using VelocityViewServlet使用 VelocityViewServlet 时放置 Velocity 属性的最佳做法是什么
【发布时间】:2016-05-19 18:01:23
【问题描述】:

我想在 Web 应用程序中使用 Velocity,以便将动态内容从数据库添加到 html 文件。我已经使用VelocityViewServlet 成功配置了 Velocity。我的 web.xml 看起来像这样:

<servlet>
    <servlet-name>velocity</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>velocity</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

我想以这些方式加载一些内容:

#set( $pageId = "6655231")
$data.getContent($pageId) 

我应该在哪里设置属性$data

我应该在扩展 VelocityViewServlet 的自己的 HttpServlet 实现中设置属性吗?

或者有其他方法吗?

【问题讨论】:

    标签: java servlets web velocity web.xml


    【解决方案1】:

    在使用 Velocity View Tools 时,应该有一个名为WEB-INF/tools.xmlconfiguration file,它定义了三个嵌套范围应用程序、会话和请求对应的三个工具箱)。这些工具箱也可以包含静态数据。

    例如,如果您的数据访问器对象使用类 org.mine.Catalog,您的 tools.xml 文件可能是:

    <?xml version="1.0"?>
    <tools>
      <toolbox scope="application">
         <tool key="date" class="org.apache.velocity.tools.generic.ComparisonDateTool" locale="en_US"/>
        <tool key="data" class="org.mine.Catalog"/>
      </toolbox>
      <toolbox scope="session">
        <property name="create-session" value="true" type="boolean"/>
        <tool key="map" class="java.util.HashMap"/>
      </toolbox>
      <toolbox scope="request">
        <tool key="custom" class="org.mine.CustomTool" randomProperty="whatever"/>
      </toolbox>
      <data type="string" key="deployment" value="prod"/>
    </tools>
    

    standard tools已默认包含在工具箱中,因此您只需声明自定义工具,或具有自定义属性的标准工具。

    要从数据库添加动态内容,您可以查看Velosurf 工具。你也可以write your custom tool,这很简单:基本上你的工具是一个普通的旧java对象,有一个空的构造函数,需要getter和setter,还有一个void configure(Map config)方法接收几个环境属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 1970-01-01
      • 2010-09-29
      • 2013-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多