StringEscapeUtils.escapeJavaScript Escape одинарная кавычка

У меня есть 2 типа текстовой строки, которые мне нужно экранировать:

1) имя = Алиса " (двойная кавычка)

2) name = ALICE '(одинарная кавычка)

Это мои коды:

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" и обеспечивал возможность сохранения результата в дБ

1 ответ

Решение

Проблема исправлена! Вместо того, чтобы ставить коды прямо внутри public ActionForward search (){}

в файле JSP назначьте класс декоратора

<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

    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);
Другие вопросы по тегам