Spring MVC freemarker宏简化

Spring MVC freemarker macro simplify

我在freemarker中写了一个宏:

<#macro Hidden name value >
        <input name="${id}" value="${value}" type="hidden" />
</#macro>

然后我在我的网页中使用它:

    <@Hidden name="user_id" value=user_id />
    <@Hidden name="user_name" value=user_name />
    <@Hidden name="age" value=age />
    <@Hidden name="address" value=address />

name 总是等于 value,尽管 name 是一个字符串,而 valueModelMap 中的动态变量。我想简化 macor 然后我可以这样使用:

    <@Hidden name="user_id"  />
    <@Hidden name="user_name"  />
    <@Hidden name="age"  />
    <@Hidden name="address" />

那么怎么修改宏呢

你可以这样做:

<#macro Hidden name>
    <input name="${name}" value="${.vars[name]}" type="hidden" />
</#macro>

但您也可以使用 <@spring.bind /> 库来完成此操作:https://svn.apache.org/repos/asf/qpid/tags/pre-M1/java/java/management/core/lib/spring/spring.ftl