Проверка на стороне клиента в Struts 2 - PullRequest
3 голосов
/ 10 января 2012

Я новичок в Java Web. Я следую учебнику о стойках 2 на: http://viralpatel.net

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

http://pastebin.com/Lc49jnMs

Нет метода javascript validateForm_customer ().

В customer.jsp я добавил атрибут 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. Я не знаю, но новая версия также не работает со мной. Он успешно построен, но имеет некоторую ошибку при инициализации диспетчера, поэтому при использовании taglib «struts-tags» выдает ошибку

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 работают хорошо, пока я не попробую использовать проверку.

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

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

Ответы [ 3 ]

1 голос
/ 11 января 2012

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

Затем удалите struts2-gxp-plugin (выглядиткак будто тебе это не нужно), после чего посмотри что получится

1 голос
/ 04 июня 2013

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

index.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

0 голосов
/ 10 января 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...