Enviar dados para a View (WW e Freemarker)

5 respostas
J2Alex

Estou tentado enviar um valor para um template do freemarker da seguinte forma:

xwork.xml
...
<action name="indexTeste" 
  class="com.opensymphony.xwork.ActionSupport">
    <result name="success" 
        type="dispatcher">/WEB-INF/templates/index.ftl</result>
</action>
...
index.ftl
<html>
  <body>
  	<h1>${frase}</h1>
  </body>
</html>
IndexAction.java
...
public class IndexAction extends ActionSupport {
	String frase;
	public String getFrase() {
		return frase;
	}
	public void setFrase(String frase) {
		this.frase = frase;
	}
	public String execute() throws Exception {
		this.frase = "Teste";
		return SUCCESS;
	}
}

Quando executo, gera o seguinte erro:

Expression frase is undefined on line 3, column 15 in WEB-INF/templates/index.ftl.
The problematic instruction:
----------
==> ${frase} [on line 3, column 13 in WEB-INF/templates/index.ftl]

Ou seja, o valor não foi setado e não faço a mínima idéia de como fazer isso. Já procurei bastante e não encontrei nada.

As configurações do web.xml e xwork.xml estão corretas.

Alguém pode me ajudar?

Grato.

5 Respostas

J2Alex

Ops… já descobri o meu erro…

O arquivo xwork.xml não estava tão correto assim. :oops:

Em vez de:

... <action name="indexTeste" class="com.opensymphony.xwork.ActionSupport"> <result name="success" type="dispatcher">/WEB-INF/templates/index.ftl</result> </action> ...

o correto é:

... <action name="indexTeste" class="teste.IndexAction"> <result name="success" type="dispatcher">/WEB-INF/templates/index.ftl</result> </action> ...

ricardolecheta

use o type=“freemarker”…

se vc usar o dispatcher, o WW vai usar FreemarkerServlet…
este por sua vez está deprecated…

O FreemarkerResult está com um código mais atual.

J2Alex

Valeu pela dica Ricardo! :thumbup:

C

ricardolecheta

Mas, para eu usar o freemarker, que servlet eu devo mapear no web.xml ? O com.opensymphony.webwork.dispatcher.ServletDispatcher ou o com.opensymphony.webwork.views.freemarker.FreemarkerServlet ?

Valeu!

kartler

carneiro:
ricardolecheta

Mas, para eu usar o freemarker, que servlet eu devo mapear no web.xml ? O com.opensymphony.webwork.dispatcher.ServletDispatcher ou o com.opensymphony.webwork.views.freemarker.FreemarkerServlet ?

Valeu!

com.opensymphony.webwork.views.freemarker.FreemarkerServlet

Criado 17 de maio de 2005
Ultima resposta 29 de mai. de 2005
Respostas 5
Participantes 4