迁移到 struts 6.3.0 时未选中单选按钮

问题描述 投票:0回答:1

我最近从 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>
java struts2 struts freemarker
1个回答
0
投票

研究结果表明代码已被重写以删除已弃用的 API。

?html

注意: 该内置函数已被 2.3.24 中引入的“自动转义机制”“弃用”。为了防止双重转义和混淆,在自动转义处于活动状态的地方使用此内置函数会导致解析时错误。为了帮助迁移,此内置函数会默默地绕过 HTML 标记输出值而不更改它们。 作为 HTML 标记的字符串。也就是说,带有 all: 的字符串: < replaced with &lt; > replaced with &gt; & replaced with &amp; " replaced with &quot; ' is replaced with &#39;

如果程序员已

将不兼容的改进设置
设置为2.3.24或更高版本(也如果它设置为2.3.20或更高版本并且您位于字符串文字之外)。否则 ' 将不会被替换,因此您必须使用引号(“,而不是 ')在要安全插入值的位置引用属性值。

© www.soinside.com 2019 - 2024. All rights reserved.