Struts 2 插件 <s:submit> 在标签中呈现 html 表达式

Struts 2 plugin <s:submit> render html expression in label

我正在尝试使用 HTML 修饰符标签呈现提交按钮

在 ApplicationResources.properties 文件中

label.ok=<u>O</u>K

那么我的 JSP 密码是

<s:form class="form-group " method="POST" id="profileform" theme="bootstrap" cssClass="form-horizontal" action="go.asociate.addactivities.action">
......
    <div class="row">
        <div class="col-md-12 btn-toolbar">
            <button type="button" class="btn btn-default pull-right custombtn" accesskey="c" onclick="javascript:location.href='go.home.action';">
                <s:text name="label.cancel"></s:text>
            </button>
            <s:submit class="btn btn-default pull-right custombtn" accesskey="o" key="label.ok"></s:submit>
        </div>
    </div>
</s:form

问题是它在提交按钮中呈现文字键名称值 <u>O</u>K。有人知道解决这个问题的正确语法吗?

要在提交按钮中使用 HTML,它必须是 "button" 类型,因为按钮有主体,而 <input type="submit" /> 没有;

<s:submit type="button" value="%{getText('label.ok')}" />

但这还不够;它将被翻译成

<button value="&lt;u&gt;O&lt;/u&gt;K" type="submit">
    &lt;u&gt;O&lt;/u&gt;K
</button>

因为内置转义。

虽然在 <s:property /> 中您可以通过设置 escapeHtml="false" 来禁用它,但 <s:submit /> 不提供此选项;

要解决它,只需在按钮正文中使用 <s:text />

<s:submit type="button">
    <s:text name="label.ok" />
</s:submit>

这很可能是唯一的方法,但它会起作用,并且会被翻译成

<button value="Submit" type="submit">
    <u>O</u>K
</button>