首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StringEscapeUtils.escapeJavaScript逃逸单引号

StringEscapeUtils.escapeJavaScript逃逸单引号
EN

Stack Overflow用户
提问于 2017-03-28 03:12:09
回答 1查看 1.5K关注 0票数 0

我有两种类型的文本字符串需要转义:

1) name=ALICE“(双引号)

2) name=ALICE‘(单引号)

这是我的代码:

代码语言:javascript
复制
if (name.indexOf('\'') >= 0){
        name=StringEscapeUtils.escapeJavaScript(name);
        System.out.println("escape by javascript " + name);

} else {
        name=StringEscapeUtils.escapeHtml(name);
        System.out.println("escape by html" + name);

}

该解决方案对两者都正确工作(能够将两个名称文本保存在数据库中)

1) details-doublequote.jsp

2) details-singlequote.jsp

然而,显示有点差。转义单引号时,如何隐藏反斜杠字符以避免显示?我希望jsp显示ALICE',如果ALICE\' &确保能够将结果保存在db中

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-28 12:04:01

问题解决了!而不是将代码直接放入public ActionForward search (){}

在JSP文件中,分配装饰器类。

代码语言:javascript
复制
<display:table sort="list" style="width: 100%" cellspacing="1" cellpadding="2" class="mydataTable" excludedParams="*" name="custTable" defaultsort="1" defaultorder="ascending" requestURI="<%=uri%>" pagesize="20" decorator="com.aza.util.MyDecorator">            
        <display:column style="width: 150px;" titleKey="customer.name" property="name" sortable="true" headerClass="sortable tabledisplay"/>    
    </display:table>

在装饰类中,MyDecorator.java

代码语言:javascript
复制
    MyModel cusModel = (MyModel) getCurrentRowObject();
    StringBuffer buf = new StringBuffer();

    String customerName=cusModel.getName();

    if (customerName.indexOf('\'') >= 0){
        customerName=StringEscapeUtils.escapeJavaScript(customerName);          
    } else {
        customerName=StringEscapeUtils.escapeHtml(customerName);            
    }

    cusModel.setName(customerName);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43060009

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档