Salve a tutti,

Ho un problema, assurdo, ho iniziato da poco ad imparare il funzionamento del template engine Freemarker e non so se sia un mio errore .

Ho bisogno di passare un oggetto (bean) ad un file di template .ftl cosi da far stampare i dati membro di quest'oggetto direttamente al file di template.

Ho letto in giro che è una pratica comune. Quando eseguo la servlet viene mostrato un'eccezione dicendo che il dato passato è nullo: ${theObject.title}, se provassi a stampare ${theObject} stampa il riferimento all'oggetto.

Qualche link in cui viene risolto il mio problema:

http://stackoverflow.com/questions/5...d-then-looping

http://freemarker.org/docs/pgui_data...ctWrapper.html

Vi mostro il codice che ho scritto, non riesco proprio a risolvere questo problema

Servlet:

codice:
public class servletTest extends HttpServlet {

/**
 * @see Servlet#init(ServletConfig)
 */
public void init(ServletConfig servConfig) throws ServletException {
    // TODO Auto-generated method stub


    try {
        cfg = config.getConfig();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


}




/**
 * Questa chiamata permette di chiamare il file di configurazione per il
 * template
 */
private Configuration             cfg;








protected void doGet(HttpServletRequest request,
                     HttpServletResponse response) throws ServletException, IOException {




    PrintWriter out = response.getWriter();






     SimpleHash root = new SimpleHash();
     // expose a "simple" java objects:
     root.put("theString", "wombat");
     // expose an "arbitrary" java objects:
     root.put("theObject", new banquet( "Thinking In Java") );




    /* Get the template */
    Template template = cfg.getTemplate("banquetsList.ftl");


    Writer out_template = new StringWriter();


    try {


        template.process( root, out_template );


    } catch (TemplateException e) {
        e.printStackTrace();
    }


    out.write( out_template.toString() );






}






}

File di configurazione di freemarker:

codice:
private static void build_config() throws IOException{



    cfg = new Configuration();


    cfg.setServletContextForTemplateLoading( R.context.get_servletContext(), R.path.get_TEMPLATE() );


    DefaultObjectWrapper ObjectWrapper = new DefaultObjectWrapper();


    cfg.setObjectWrapper( ObjectWrapper.DEFAULT_WRAPPER );
    cfg.setDefaultEncoding("UTF-8");
    cfg.setTemplateExceptionHandler(TemplateExceptionHandler.HTML_DEBUG_HANDLER);
    cfg.setIncompatibleImprovements(new Version(2, 3, 20));








}

Classe di cui viene derivato l'oggetto da passare:

codice:
class banquet{

banquet( /*int code,*/ String title){
    //this.code = code;
    this.title = title;
}
public String title;
//public int code;


 }
File di template

codice:
<html>

<body>


    <h1>
        lista di banchetti
    </h1>






    <div>


    </div>


    <div>




               ${theObject.title}
    </div>






</body>
</html>

Che cosa ho sbagliato?? non riesco proprio a capirlo... ho letto nel post precedente, che questo tipo d'approccio viene gestito tramite spring che non vorrei utilizzare perché il mio intento è quello di capire come usare freemarker.

Grazie mille in anticipo spero di non aver fatto qualche gaff ciaooo!!