无法从自定义结果类型中的值堆栈获取ftl中的值

时间:2010-03-13 15:43:44

标签: templates freemarker

我无法从FTL文件中的值堆栈中检索值。这是代码。

Action类包含一个名为'name'的属性

private String name;
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}

public String execute(){
    setName("From value stack .. ");
    return SUCCESS;
}

FTL代码:

${name}

自定义结果类型doExecute方法

Configuration configuration = new Configuration();

String templatePath = "/ftl";
ServletContext context = ServletActionContext.getServletContext();
configuration.setServletContextForTemplateLoading(context, templatePath);
configuration.setObjectWrapper(new DefaultObjectWrapper());

Template template = configuration.getTemplate("sample.ftl");
OutputStreamWriter out = new OutputStreamWriter(System.out);
template.process(ActionContext.getContext().getValueStack(), out);

我正在传递包含最近执行的Action的值Stack。但是FTL正在抛出异常

在sample.ftl的第1行第3行未定义表达式名称

我尝试传递会话而不是值堆栈,我可以在FTL中获取值。

请建议我从值类中获取值从Action类到FTL的方法。 非常感谢。

1 个答案:

答案 0 :(得分:0)

我有办法从最近执行的Action Class中获取值。只需更改最后一条语句如下

template.process(invocation.getAction(), out);

由于