我最近从 struts 2.5.30 迁移到 struts 6.3.0。我遇到问题,在我从
?html
中删除 radiomap.ftl
后,单选按钮未设置其值(未选中)。
根据(https://cwiki.apache.org/confluence/display/WW/Struts+2.5+to+6.0.0+migration)所述,在 Struts 6.X 中,freemarker 将自动转义。有谁知道如何解决此问题或调试此问题?我已经搜索这个问题很长一段时间了,但没有找到任何东西。
<@s.iterator value="parameters.list">
<#if parameters.listKey??>
<#assign itemKey = stack.findValue(parameters.listKey)/>
<#else>
<#assign itemKey = stack.findValue('top')/>
</#if>
<#assign itemKeyStr = itemKey.toString() />
<#if parameters.listValue??>
<#assign itemValue = stack.findString(parameters.listValue)/>
<#else>
<#assign itemValue = stack.findString('top')/>
</#if>
<input type="radio"<#rt/>
<#if parameters.name??>
name="${parameters.name}"<#rt/>
</#if>
id="${parameters.id}${itemKeyStr}"<#rt/>
<#if tag.contains(parameters.nameValue?default(''), itemKeyStr)>
checked="checked"<#rt/>
</#if>
<#if itemKey??>
value="${itemKeyStr}"<#rt/>
</#if>
<#if parameters.disabled?default(false)>
disabled="disabled"<#rt/>
</#if>
<#if parameters.tabindex??>
tabindex="${parameters.tabindex}"<#rt/>
</#if>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
</#if>
<#if parameters.cssStyle??>
style="${parameters.cssStyle}"<#rt/>
</#if>
<#if parameters.title??>
title="${parameters.title}"<#rt/>
</#if>
<#if parameters.mandatory??>
mandatory="${parameters.mandatory}"<#rt/>
</#if>
<#if parameters.label??>
label="${parameters.label}"<#rt/>
</#if>
<#include "/${parameters.defaultTemplateDir}/simple/scripting-events.ftl" />
<#include "/${parameters.defaultTemplateDir}/simple/common-attributes.ftl" />
/><#rt/>
<label for="${parameters.id}${itemKeyStr}"<#rt/>
<#if parameters.cssClass??>
class="${parameters.cssClass}"<#rt/>
</#if>
><#rt/>
${itemValue}<#rt/>
</label>
</@s.iterator>
研究结果表明代码已被重写以删除已弃用的 API。
注意: 该内置函数已被 2.3.24 中引入的“自动转义机制”“弃用”。为了防止双重转义和混淆,在自动转义处于活动状态的地方使用此内置函数会导致解析时错误。为了帮助迁移,此内置函数会默默地绕过 HTML 标记输出值而不更改它们。 作为 HTML 标记的字符串。也就是说,带有 all: 的字符串:
< replaced with < > replaced with > & replaced with & " replaced with " ' is replaced with '
如果程序员已
将不兼容的改进设置设置为2.3.24或更高版本(也如果它设置为2.3.20或更高版本并且您位于字符串文字之外)。否则 ' 将不会被替换,因此您必须使用引号(“,而不是 ')在要安全插入值的位置引用属性值。