2010年8月6日

Groovy 1.7 GroovyServer Pages的Servlet設定

Groovy官方的一篇GSP文章,有提到GSP(GroovyServer Pages)的設定方法,在 WEB-INF/web.xml 增加 <servlet> 及 <servlet-mapping> 設定。

<servlet>
    <servlet-name>GSP</servlet-name>
    <servlet-class>groovy.modules.pages.GroovyPages</servlet-class>
    <init-param>
         <param-name>encoding</param-name>
         <param-value>ISO-8859-1</param-value>
    </init-param>
    <init-param>
         <param-name>debug</param-name>
         <param-value>0</param-value>
    </init-param>
</servlet>

<servlet-mapping>
    <servlet-name>GSP</servlet-name>
    <url-pattern>*.gsp</url-pattern>
</servlet-mapping>
</servlet>

在最新版的Groovy 1.7.4,這個設定會有些問題,紅色字體groovy.modules.pages.GroovyPages其實已經不存在這個Java類別,取而代之的是groovy.servlet.TemplateServlet這個類別,因此正確的設定如下。

    <servlet>
        <servlet-name>GSP</servlet-name>
        <servlet-class>groovy.servlet.TemplateServlet</servlet-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>GSP</servlet-name>
        <url-pattern>*.gsp</url-pattern>
    </servlet-mapping>

從Groovlet(*.groovy or *.grv)程式要將頁面交給GSP(*.gsp)處理,可以用如下的程式碼。
def forward(page, req, res){
    def dis = req.getRequestDispatcher(page);
    dis.forward(req, res);
}

forward("html_template.gsp", request, response)

沒有留言:

張貼留言

lyhcode by lyhcode
歡迎轉載,請務必註明出處!