0

フリーメーカーのテンプレートで Bean の値を取得したい。そのために私がやっていることは何ですか?

私のJavaクラスで:

MyBean myBean= new MyBean();
myBean.setName("ranveer");
session.setAttribute("MyBean", myBean);

セッターとゲッターも作成しました。

私がこれをやっているときのテンプレートで:

<#assign bean= Session.MyBean>
    ${bean}

クラスパッケージ名を出力していますが、テンプレートでこれを行っている場合:

 <#assign bean= Session.MyBean>
        ${bean.name}

Name は、Bean で定義したプロパティであり、値は ranveer ですが、この値を出力していません。スタック トレースは次のとおりです。

The Web Script /Test/service/inbox/sidebar has responded with a status of 500 - Internal Error.

500 Description:    An error inside the HTTP server which prevented it from fulfilling the request.

Message:    09310010 Failed to process template webscripts/inbox/inbox.sidebar.get.html.ftl

Exception:  freemarker.core.InvalidReferenceException - Expression ${bean.name} is undefined on line 5, column 11 in webscripts/inbox/inbox.sidebar.get.html.ftl.

    freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:124)
    freemarker.core.Expression.getStringValue(Expression.java:118)
    freemarker.core.Expression.getStringValue(Expression.java:93)
    freemarker.core.DollarVariable.accept(DollarVariable.java:76)
    freemarker.core.Environment.visit(Environment.java:208)
    freemarker.core.MixedContent.accept(MixedContent.java:92)
    freemarker.core.Environment.visit(Environment.java:208)
    freemarker.core.Environment.process(Environment.java:188)
    freemarker.template.Template.process(Template.java:237)
    org.springframework.extensions.webscripts.processor.FTLTemplateProcessor.process(FTLTemplateProcessor.java:156)
    org.springframework.extensions.webscripts.AbstractWebScript.renderTemplate(AbstractWebScript.java:580)
    org.springframework.extensions.webscripts.DeclarativeWebScript.renderFormatTemplate(DeclarativeWebScript.java:263)
    org.springframework.extensions.webscripts.DeclarativeWebScript.execute(DeclarativeWebScript.java:143)
    org.springframework.extensions.webscripts.PresentationContainer.executeScript(PresentationContainer.java:69)
    org.springframework.extensions.webscripts.LocalWebScriptRuntimeContainer.executeScript(LocalWebScriptRuntimeContainer.java:203)
    org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:333)
    org.springframework.extensions.webscripts.AbstractRuntime.executeScript(AbstractRuntime.java:189)
4

2 に答える 2

1

MyBean に getName() メソッドがない場合、${bean.name} は未定義です

于 2013-11-01T13:43:07.067 に答える
0

spring beans.xml の freemarker ビュー リゾルバーに次のプロパティを追加してください。

<property name="exposeSessionAttributes">
    <value>true</value>
</property>

そしてさらに試みる。

于 2013-11-07T14:41:59.913 に答える