[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends:00024] Re: Velocity について



疋田です。

高橋様、えんどう様、本当にありがとうございました。

>    ServletConfig.getServletContext().getRealPath("/");
> の呼び出しが必要です。
> 
>   <Velocity_Dir>\examples\servlet_example1\SampleServlet.java
> の   
>   protected Properties loadConfiguration(ServletConfig config)
> というメソッドを見てみてください。

このサンプルを参考にしたら動作しました。

が、もうひとつ問題が。

実は、出力先をクライアントではなく、ファイルにしたいと考えています。
ブラウザから送信されてきた結果を元に、サーバ側でSVGファイルを作成したい
のです。

TemplateとContextのマージ結果をファイルに格納するにはどうすればいいので
しょうか。

http://jakarta.apache.org/velocity/api/index.html
を参考に調べてみたのですが、わかりませんでした。

一応、現在のコードを引用しておきます。

よろしくお願いいたします。

------- TestServlet.java
import java.io.* ;
import java.util.* ;

import javax.servlet.* ;
import javax.servlet.http.* ;

import org.apache.velocity.* ;
import org.apache.velocity.app.* ;
import org.apache.velocity.context.* ;
import org.apache.velocity.servlet.* ;
import org.apache.velocity.exception.* ;

public class TestServlet extends VelocityServlet {

  protected Properties loadConfiguration( ServletConfig sc ) {
    Properties p = new Properties() ;

    String path = sc.getServletContext().getRealPath("/") ;

    if ( path == null ) {
      System.out.println("This Servlet loadConfiguration() : unable to get the current webapp root.") ;
      path = "/" ;
    }

    p.setProperty( Velocity.FILE_RESOURCE_LOADER_PATH, path ) ;
    p.setProperty( "runtime.log", path + "velocity.log" ) ;

    return p ;
  } // End of Method loadConfigration

  public Template handleRequest (HttpServletRequest req, HttpServletResponse res, Context ctx) {
    String title, fill, stroke, transform ;

    title= req.getParameter("title") ;
    fill= req.getParameter("fill") ;
    stroke= req.getParameter("stroke") ;
    transform= req.getParameter("transform") ;

    ctx.put("title", title) ;
    ctx.put("fill", fill) ;
    ctx.put("stroke", stroke) ;
    ctx.put("transform", transform) ;

    Template template = null ;

    try {
      template = getTemplate("test.vm") ;
    } catch ( ParseErrorException pee ) {
      System.out.println( "This Servlet : parse error for template " + pee ) ;
    } catch ( ResourceNotFoundException rnfe ) {
      System.out.println( "This Servlet : template not found " + rnfe ) ;
    } catch ( Exception e ) {
      System.out.println( "Error " + e ) ;
    }
    return template ;

  } // End of Method handleRequest 

}
---------------
Keiichi HIKITA
NTT Cyber Solutions Laboratories
Mail: hikita.keiichi@xxxxxxxxxxxxx
Tel : 0422-59-7785 Fax : 0422-59-3931