Проверка на стороне клиента не работает с помощью validate()
Я делаю проверку внутри метода validate().
public void validate(){
if(continent.equals("-1")){
HttpServletRequest request=ServletActionContext.getRequest();
HttpSession session=request.getSession();
String s=(String)session.getAttribute("operation");
if(s.equals("edit"))
edit();
else if(s.equals("add"))
add();
addFieldError( "Continent", "Continent must be selected");
}
}
А в jsp(view) добавлен атрибут формы validate=true
<s:form action="add" name="aaa" cssClass="yy" method="post" validate="true">
<s:textfield name="Code" label="Code" readonly="false" cssClass="defaultTextBox"/>
<s:textfield name="Name" label="Name" cssClass="defaultTextBox"/>
<s:select name="Continent" label="Continent" headerKey="-1" headerValue="Select" list="continentlist" cssClass="defaultTextBox"/>
<s:textfield name="IndepYear" label="Independance Year" cssClass="defaultTextBox" />
<s:submit value="Save" cssClass="login login-submit" theme="simple"/>
</s:form>
Но работает только проверка на стороне сервера. Мой вопрос -> не возможно ли добавить проверку на стороне клиента с помощью метода validate()?
3 ответа
В Struts 2 проверка на стороне клиента имеет разные значения и полностью зависит от типа используемой темы.
С
XHTML
(по умолчанию) иCSS XHTML
, вы можете использоватьэто полностью клиентская часть, основанная на Javascript и не взаимодействующая с сервером.
С
AJAX
вместо этого вы можете запуститькоторый свяжется с сервером, запустит весь стек проверки и (чтобы ответить на ваш вопрос) запустит ваш
validate()
методы тоже.
Я лично предпочитаю использовать SIMPLE
тема, полностью обрабатывая HTML, CSS и JavaScript самостоятельно.
Поскольку проверка на стороне сервера является обязательной, проверку на стороне клиента следует рассматривать только как излишек, что положительно сказывается на том, чтобы сделать страницу более удобной для пользователя, и уменьшить сетевой трафик в среде с большим количеством пользователей (вы блокируете неудачные - но законные - запросы, прежде чем они идут по проводу:)
Подумайте об использовании типов HTML5 с откатом на jQuery, особенно если вы ориентируетесь на мобильные устройства.
На самом деле вы не должны смешивать код на стороне сервера и на стороне клиента. Метод validate может быть вызван только на стороне сервера... Поэтому нет способа использовать этот метод на стороне клиента. Вы должны написать свою собственную проверку JS-стороны так же, как проверку на стороне сервера.
Можно выполнить проверку AJAX, используя код на стороне сервера, используя плагин struts2-jquery, как показано в разделе " Витрина" в разделе:
- Формы с проверкой
- Формы с проверкой по обычаю
Пример, который может вас заинтересовать, - это Отправка формы без AJAX.