Если вы используете FormController, вы можете зарегистрировать новый редактор свойств, переопределив метод initBinder (HttpServletReques, ServletRequestDataBinder). Этот редактор свойств может избежать внедрения html, javascript и sql.
Если вы используете редактор свойств, значения из объекта запроса будут обработаны редактором перед присвоением объекту команды.
Когда мы регистрируем редактор, мы должны указать тип элемента, значения которого должны обрабатываться редактором.
Извините, теперь у меня нет синтаксиса метода. Но я уверен, что именно так мы этого добились.
EDITED
Я думаю, что следующий синтаксис может работать
В вашем контроллере переопределите следующий метод, как показано
@Override
protected void initBinder(HttpServletRequest request,
ServletRequestDataBinder binder) throws Exception {
super.initBinder(request, binder);
binder.registerCustomEditor(String.class,
new StringEscapeEditor(true, true, false));
}
Затем создайте следующий редактор свойств
public class StringEscapeEditor extends PropertyEditorSupport {
private boolean escapeHTML;
private boolean escapeJavaScript;
private boolean escapeSQL;
public StringEscapeEditor() {
super();
}
public StringEscapeEditor(boolean escapeHTML, boolean escapeJavaScript,
boolean escapeSQL) {
super();
this.escapeHTML = escapeHTML;
this.escapeJavaScript = escapeJavaScript;
this.escapeSQL = escapeSQL;
}
public void setAsText(String text) {
if (text == null) {
setValue(null);
} else {
String value = text;
if (escapeHTML) {
value = StringEscapeUtils.escapeHtml(value);
}
if (escapeJavaScript) {
value = StringEscapeUtils.escapeJavaScript(value);
}
if (escapeSQL) {
value = StringEscapeUtils.escapeSql(value);
}
setValue(value);
}
}
public String getAsText() {
Object value = getValue();
return (value != null ? value.toString() : "");
}
}
Надеюсь, это поможет вам