升级至Struts 6.3.0.2后,Struts标签转义失效问题求助
解决Struts2
<s:optiontransferselect> leftTitle HTML转义问题 问题场景
使用Struts2的<s:optiontransferselect>标签时,给leftTitle属性设置带<strong>的HTML内容:
<s:optiontransferselect leftTitle="<strong>All system groups</strong>"> </s:optiontransferselect>
预期标题显示为All system groups,但实际输出的是转义后的<strong>标签文本,且全局设置struts.ui.escapeHtmlBody=false无法解决该问题。
解决方案
方案1:通过OGNL内置函数取消转义
利用Struts2的OGNL内置escapeHtml函数,强制关闭当前属性的HTML转义:
<s:optiontransferselect leftTitle="%{escapeHtml(false, '<strong>All system groups</strong>')}"> </s:optiontransferselect>
方案2:使用Apache Commons工具类转义还原
若项目依赖Apache Commons Lang,可调用工具类的unescapeHtml方法处理:
<s:optiontransferselect leftTitle="%{@org.apache.commons.lang.StringUtils@unescapeHtml('<strong>All system groups</strong>')}"> </s:optiontransferselect>
方案3:CSS样式替代HTML标签(推荐)
避免在属性中嵌入HTML,通过给标题元素添加自定义CSS类来实现加粗效果:
- 给标签添加
leftTitleClass属性:
<s:optiontransferselect leftTitle="All system groups" leftTitleClass="bold-title"> </s:optiontransferselect>
- 在CSS中定义样式:
.bold-title { font-weight: bold; }
内容的提问来源于stack exchange,提问作者priya Jain
相关产品推荐
相关产品推荐

