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);
}
Решение работает правильно для обоих (возможность сохранить оба текстовых имени в базе данных)
Тем не менее, дисплей немного выключен. Как я могу скрыть символ обратной косой черты от показа при экранировании одинарной кавычки? Я хочу, чтобы 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);