zoukankan      html  css  js  c++  java
  • OFBiz实战(1):整合Groovy+FreeMaker

    这是OFBiz实战系列的第一篇文件,该系列的目的是整合Groovy+FreeMaker开发一个图书管理系统,阐述在此过程中碰到的一系列问题,以及如何解决这些问题。第一篇文章说明如何使用Groovy+FreeMaker搭建基本的组件框架,并能够将数据从Groovy传到FreeMaker。|

    1. 在hot-deploy目录下创建组件library基本目录结构。


    2. 新建文件library/ofbiz-component.xml,编辑内容:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <ofbiz-component name="library"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd">
    
        <resource-loader name="main" type="component"/>
        
        <webapp name="library"
            title="Library"
            server="default-server"
            location="webapp/library"
            base-permission="OFBTOOLS"
            mount-point="/library"
            app-bar-display="false"/>
            
    </ofbiz-component>


    3. 新建文件library/webapp/library/WEB-INF/web.xml,编辑内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    
    <web-app>
        <display-name>Library</display-name>
    
        <context-param>
            <param-name>webSiteId</param-name>
            <param-value>LIBRARY</param-value>
            <description>A unique ID used to look up the WebSite entity</description>
        </context-param>
        <context-param>
            <param-name>localDispatcherName</param-name>
            <param-value>library</param-value>
            <description>A unique name used to identify/recognize the local dispatcher for the Service Engine</description>
        </context-param>
        <context-param>
            <param-name>entityDelegatorName</param-name>
            <param-value>default</param-value>
            <description>The Name of the Entity Delegator to use, defined in entityengine.xml</description>
        </context-param>
        <context-param>
            <param-name>compressHTML</param-name>
            <param-value>false</param-value>
            <description>Remove unnecessary whitespace from HTML output.</description>
        </context-param>
    
        <filter>
            <filter-name>ContextFilter</filter-name>
            <display-name>ContextFilter</display-name>
            <filter-class>org.ofbiz.webapp.control.ContextFilter</filter-class>
            <init-param><param-name>disableContextSecurity</param-name><param-value>N</param-value></init-param>
            <init-param>
                <param-name>allowedPaths</param-name>
                <param-value>/error:/control:/select:/index.html:/index.jsp:/default.html:/default.jsp:/images:/includes/maincss.css</param-value>
            </init-param>
            <init-param><param-name>errorCode</param-name><param-value>403</param-value></init-param>
            <init-param><param-name>redirectPath</param-name><param-value>/control/main</param-value></init-param>
        </filter>
        <filter-mapping><filter-name>ContextFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
    
        <listener><listener-class>org.ofbiz.webapp.control.ControlEventListener</listener-class></listener>
        <listener><listener-class>org.ofbiz.webapp.control.LoginEventListener</listener-class></listener>
    
        <servlet>
            <servlet-name>ControlServlet</servlet-name>
            <display-name>ControlServlet</display-name>
            <description>Main Control Servlet</description>
            <servlet-class>org.ofbiz.webapp.control.ControlServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>ControlServlet</servlet-name>
            <url-pattern>/control/*</url-pattern>
        </servlet-mapping>
    
        <session-config><session-timeout>60</session-timeout><!-- in minutes --></session-config>
    
        <welcome-file-list>
            <welcome-file>index.jsp</welcome-file>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
        </welcome-file-list>
    </web-app>


    4. 新建文件library/webapp/library/WEB-INF/controller.xml,编辑内容:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <site-conf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/site-conf.xsd">
    
        <include location="component://common/webcommon/WEB-INF/common-controller.xml"/>
        <include location="component://common/webcommon/WEB-INF/portal-controller.xml"/>
    
        <request-map uri="main">
            <event type="groovy" path="component://library/webapp/library/WEB-INF/actions/main.groovy"/>
            <response name="success" type="view" value="main"/>
        </request-map>
        
        <view-map name="main" type="ftl" page="component://library/webapp/library/main.ftl"/>
    
    </site-conf>

    5. 新建文件library/webapp/library/WEB-INF/actions/main.groovy,编辑内容:

    request.setAttribute("name", "奥特曼");
    
    def books = [];
    books[0] = ["name": "Java入门", "price": 85];
    books[1] = ["name": "Java实战", "price": 70];
    books[2] = ["name": "Java中级", "price": 63];
    books[3] = ["name": "Java高级", "price": 81];
    request.setAttribute("books", books);
    
    return "success";


    6. 新建文件library/webapp/library/main.ftl,编辑内容:

    你的名字:<b>${requestAttributes.name}</b>
    
    <table border='1'>
        <#list requestAttributes.books as book>
        <tr>
            <td>${book.name}</td>
            <td>${book.price?if_exists}</td>
        </tr>
        </#list>
    </table>


    7. 启动OFBiz,浏览http://localhost:8080/library/control/main,看到如下的结果:


    有遗憾,为什么FreeMaker中每个变量都要带上requestAttributes,太难看了?下一篇文件想办法解决。

  • 相关阅读:
    CF899A Splitting in Teams
    CF898A Rounding
    CF914A Perfect Squares
    CF864A Fair Game
    CF909A Generate Login
    关于C++的一些函数的使用方法
    又是一个二模02,不过day2
    2模02day1题解
    二模Day2题解
    KMP算法心得
  • 原文地址:https://www.cnblogs.com/eastson/p/3597958.html
Copyright © 2011-2022 走看看