2015-01-09 3 views
2

Я выполняю проверку внутри метода 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 (вид) добавлен атрибут форма проверки = истина

<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()?

ответ

0

На самом деле вы не должны смешивать код сервера и клиентской части. метод проверки может быть вызван только на стороне сервера ... Таким образом, нет способа использовать этот метод на стороне клиента. Вам необходимо написать свою собственную проверку на стороне JS так же, как и проверку на стороне сервера.

+0

Существует один способ, хотя это не мой предпочтительный способ. Подробнее читайте ниже. –

+0

@ Аndrea вы абсолютно правы, но я имел в виду, что вы можете сделать ajax-вызов со стороны клиента, но он будет вызываться на стороне сервера, и вы будете иметь проверку на стороне сервера. Такое же поведение может быть достигнуто многими способами. –

1

В Struts 2, Client Side Validation имеет различные значения, и полностью зависит от типа theme, который вы используете.

  1. С XHTML (по умолчанию) и CSS XHTML, вы можете использовать

    , который полностью на стороне клиента, Javascript, основанный и не общается с сервером.

  2. С AJAX темы вместо этого, вы можете запустить

    , который будет обращаться к серверу, выполнив всю проверку стеку, и (чтобы ответить на ваш вопрос) работает ваш validate() методы тоже.


Я лично предпочитаю использовать SIMPLE тему, полностью обработки HTML, КСС ​​и JavaScript на мой собственный.

Поскольку проверка на стороне сервера является обязательной, проверка на стороне клиента должна рассматриваться только как излишек, положительный для того, чтобы сделать страницу более удобной для пользователя и уменьшить сетевой трафик в среде с высокими пользователями (вы блокируете неуспешно - но законные запросы до того, как они пройдут через провод.

Рассмотрите возможность использования типов HTML5 с резервными ошибками в jQuery, особенно если вы настроите таргетинг на мобильный.

+0

Тема 'ajax' устарела и не поставляется с последними банками S2. –

+0

@ Andrea, так как я могу достичь этого в моей программе, приведенной выше. – tanmoy

+1

@AleksandrM ничего себе, я считал это старым, но не знал (или помню), это было устарело. Это хорошо, кстати. –

0

Можно выполнить проверку AJAX с помощью стороне сервера код с помощью Struts2-JQuery плагин, как показано в Showcase по:

  • формыформ с Validation
  • ФормаForms with Custome Подтверждение

Пример, который может вас заинтересовать больше Форма Отправить без AJAX.

Смежные вопросы