2012-01-10 3 views
3

Я новичок в Java Web. Я следую инструкциям о struts 2 по адресу: http://viralpatel.netПроверка на стороне клиента в Struts 2

Успех при создании проверки на стороне сервера, но клиентская сторона не работает. При отправке я замечаю, что метод javascript не определен. Попробуйте просмотреть источник, я вижу, что никакой скрипт не генерируется. Это сгенерированный исходный HTML

http://pastebin.com/Lc49jnMs 

Там нет Javascript 'validateForm_customer) (' метод.

В customer.jsp, я добавил Validate attrubute:

<s:form action="customer.action" method="post" theme="xhtml" validate="true"> 

, а также добавили:

<s:actionerror/> 
<s:fielderror /> 

и

<s:head/> 

В struts.xml:

<action name="customer" class="mypackage.CustomerAction"> 
    <result name="success">/success.jsp</result> 
    <result name="error">/customer.jsp</result> 
</action> 

В коде у меня есть расширенный ActionSupport, и у меня есть файл CustomerAction-validation.xml. Только проверка на стороне клиента не работает, проверка на стороне сервера работает отлично.

Я использую распорки 2.1.6. Я не знаю, но новый оператор тоже не работает со мной. Это построить успех, но есть некоторые ошибки в диспетчерской Initialize, поэтому при использовании TagLib «распорка-тегов», он выдаст ошибку

The Struts dispatcher cannot be found. This is usually caused by using Struts tags without the associated filter. Struts tags are only usable when the request has passed through its servlet filter, which initializes the Struts dispatcher needed for this tag. - [unknown location] 

вызванного

org.apache.struts2.views.gxp.inject.InjectedObjectContainer 

класса не найден!

Расположение стойки 2.1.6 кажется хорошим, пока я не попытаюсь использовать проверку.

Что я сделал не так?

Спасибо и извините за мой плохой английский

+0

Привет @ binhnx218, это является вирусом. Я рад, что мой сайт был вам полезен. Что касается вашей проблемы: можете ли вы разместить свой код struts.xml. Было бы полезно найти причину проблемы. –

+0

Hi @viralpatel: Ваш сайт - отличный учебный сайт, который я когда-либо видел. Это [ссылка на] (http://pastebin.com/34LY4G8S) my struts.xml. Большое спасибо – binhnx218

+0

, когда вы используете проверку на стороне клиента, проверьте, включает ли он 'validation.js', как если бы я правильно помнил этот файл js - это ключ> для исключения, показывающий URL-адрес, который вы нажимаете при получении этой ошибки –

ответ

0

Struts теги использоваться только когда запрос прошел через сервлет фильтр Это кажется, что вы пропустили фильтр отображения в web.xml для тегов, которые вы определили. Удостоверьтесь, что они там.

+0

Это также возможно, если OP попадет на прямую страницу jsp, содержащую теги stuts2. –

+0

@thinksteep: Это не проблема. У меня есть картографический фильтр в web.xml: [здесь] (http://pastebin.com/nP5THXFe) – binhnx218

+0

Согласен. Но, похоже, OP этого не делал. – kosa

1

Во-первых, я настоятельно рекомендую вам использовать последнюю версию (по понятным причинам безопасности,), который в настоящее время является 2.3.1.1

Затем удалите Struts2-GXP-плагин (он выглядит, как вы это не нужно), после этого Посмотрите, что произойдет

+0

Спасибо! Моя ошибка в том, что я не замечаю, что сервер кэшировал библиотеки, поэтому они все еще строятся, хотя я удалил из своего проекта. Я удалил 2 пакета antlr-2.7.2, struts2-gxp-plugin, очистил и перестроил, а затем я могу запустить struts 2.3.1.1. Но проблема с проверкой на стороне клиента не решена. Является ли struts автоматически генерировать javascript для проверки базы на нашем [ActionClass] -validation.xml, или мы должны сделать это сами? – binhnx218

1

После долгих испытаний я понял, что проверка не работает на странице приветствия, заданной в файле web.xml, поэтому некоторые перенаправления должны выполняться на странице приветствия и перенаправлять ее внутренне на следующую стр. И это перенаправление не замечается пользователем. Ниже приведен пример кода моей работы.

индекс.JSP

<!--importing jslt library to redirect the page (jar required jstl.jar and standard.jar) --> 
<%@ taglib prefix="j" uri="http://java.sun.com/jsp/jstl/core" %> 
<!--redirection the index page to some action named index see strut.xml file --> 
<j:set var="baseUrl" scope="session" value="http://127.0.0.1:8080/strutsBasic/"/> 
<j:redirect url="index" /> 

struts.xml

<struts> 

<constant name="struts.enable.DynamicMethodInvocation" 
    value="false" /> 
<constant name="struts.devMode" value="false" /> 
<constant name="struts.custom.i18n.resources" 
    value="ApplicationResources" /> 

<package name="default" extends="struts-default" namespace="/"> 
    <!-- at this point redirect is mapped to login page --> 
    <action name="index"> 
    <result>/login.jsp</result> 
    </action> 

    <action name="login" 
     class="com.pkg.action.LoginAction" method="execute"> 
     <result name="success">/regform.jsp</result> 
     <result name="error">/login.jsp</result> 
    </action> 

<action name="register" 
     class="com.pkg.action.LoginAction" method="register"> 
     <result name="success1">success.jsp</result> 
     <result name="input">regform.jsp</result> 
    </action> 

</package> 

и остальная часть кода и проверки такие же, как в @Viral Patel

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