Templates Struts2更改字段错误.flt

Templates Struts2更改字段错误.flt,templates,struts2,freemarker,Templates,Struts2,Freemarker,我从struts2 source中获取了fielderror.flt,我想制作一个freemarker宏来自定义显示字段错误,但当宏调用时,我得到以下错误: 应为哈希。fieldErrors的计算结果改为中第190行第22列的freemarker.core.Macro WEB-INF/templates/flt/admin/isis/macros.flt。问题 说明: ==>分配:eKeys=fieldErrors.keySet()[在WEB-INF/templates/flt/admin/is

我从struts2 source中获取了fielderror.flt,我想制作一个freemarker宏来自定义显示字段错误,但当宏调用时,我得到以下错误:

应为哈希。fieldErrors的计算结果改为中第190行第22列的freemarker.core.Macro WEB-INF/templates/flt/admin/isis/macros.flt。问题

说明: ==>分配:eKeys=fieldErrors.keySet()[在WEB-INF/templates/flt/admin/isis/macros.flt中第190行第5列]用户指令中 fieldError_a[第6行第17列中 WEB-INF/pages/admin/security/simpleUserGroup/edit/editSimpleUserGroupMainContent.flt] 包括“editSimpleUserGroupMainContent.flt”[第76行第33列] 在

WEB-INF/pages/admin/security/simpleUserGroup/edit/editSimpleUserGroupLayout.flt] 程序员的Java回溯: ----------freemarker.template.TemplateException:应为哈希。fieldErrors的计算结果改为第190行的freemarker.core.Macro, WEB-INF/templates/flt/admin/isis/macros.flt中的第22列。在 freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135) 在freemarker.core.Dot._getaTemplateModel(Dot.java:78)


代码来自原始struts2 flt模板。有什么问题吗?

一种解决方案是将struts2标签与freemarker混合使用,如下所示

<#macro fieldErrorsTag>

<div id="system-message-container">
            <@s.if test="hasFieldErrors()">
        <div class="alert alert-error" id="system-message">
            <h4 class="alert-heading"></h4>
            <div>
                            <@s.iterator value="fieldErrors">
                                <p><@s.property escape="false" /></p>
                            </@s.iterator>
            </div>
        </div>
       </@s.if>
</div>
</#macro>


但是我认为应该避免混合标记

您是说原始模板也使用了
fieldErrors.keySet()
?那么,在您的案例中,是什么定义了
fieldErrors
宏?我不知道我没有找到任何注释