powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / (Struts) validate & cancel
8 сообщений из 8, страница 1 из 1
(Struts) validate & cancel
    #33386616
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. есть форма у которой переопределен метод validate()
2. в struts-config прописано, что validate="true"
3. В JSP кроме html:submit нарисован html:cancel

в Lifecycle of an ActionForm написано, что перед обработкой Action.execute() идет вызов ActionForm.validate() . В execute() я могу понять, что нажали cancel, а как определить isCanceled в ActionForm ?
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33386796
Pavel New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в struts-config.xml пропиши action

<action path="/ClientFormDo"
type="app.clients.ClientFormAction"
...
validate="true"
input="/ClientForm.do">
<forward name="form" path="/jsp/clients/ClientForm.jsp"/>
</action>

где type="app.clients.ClientFormAction" - класс обработчик событий

public final class ClientFormAction extends Action {

а там пропиши

if (isCancelled(request)) {
..... обработка чего либо

return (mapping.findForward("GoTo"));
}



в struts-config.xml пропиши

<global-forwards>
<forward name="GoTo" path="/xxxx.do?action=goto"/>

</global-forwards>

и так далее
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33386834
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Pavel New:
Спасибо. Но!
Я бы с радостью обработал isCanceled в Action и сделал forward куда угодно, только до него дело не доходит, т.к.
автор
перед обработкой Action.execute() идет вызов ActionForm.validate()
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33387116
Pavel New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
дело в том что html:cancel преобразовывается в конечном счете в

<input type="submit" name="org.apache.struts.taglib.html.CANCEL" value="Назад" onclick="bCancel=true;">

так уж определено природой, что:
смотри org.apache.struts.action.Action класс
и его метод isCancelled(javax.servlet.http.HttpServletRequest request)

поэтому попробуй сделать ручками тоже но классе формы или ...

вопрос непонятен.
Может быть всетаки делать в Action эти действия,

дело в том, что validate это validate , а переход по cancel это событие
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33387283
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pavel New
вопрос непонятен.


попробую еще раз обьянить: Форма SimpleForm
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 public   class  SimpleForm  extends  ActionForm {
    
     private  String _text = "";
...
     public  ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors =  new  ActionErrors();
        errors.add("_text",  new  ActionError("simpleForm.text.problem"));
         return  errors; 
    }
...

struts-config
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        <action path="/myAction"
                type="SimpleAction"
                name="SimpleForm"
                parameter="action"
                input="/uForm.jsp"
                validate="true"
                attribute="sForm">
            <forward name="success" path="/success.jsp"/>
            <forward name="cancel" path="/index.jsp"/>
        </action>
parameter="action" - используется т.к. мой Action отнаследован от LookupDispatchAction

JSP
Код: plaintext
1.
2.
3.
4.
5.
    <html:form action="myAction">
        <html:cancel property="action" onclick="bCancel=true;">
            <bean:message key="SimpleForm.cancel" />
        </html:cancel>
    </html:form>

так вот... когда ждем CANCEL, сначала попадаем в метод validate() формы, соответсвенно если валидация не прошла (а в нашем случае она не пройдет) в Action.execute() мы даже не попадем.

как быть?
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33387358
Farlen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В struts-config прописать validate="false", а из action вызвать метод someForm.validate и если errors.notEmpty(), то
if (!errors.isEmpty()) {
saveErrors(request, errors);
return mapping.findForward("edit");
}
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33388572
Pavel New
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Посмотрел одним глазком. Нет времени.
Зайду в понедельник, попробую разобраться.
Просто что-то тут накручено не туда.
...
Рейтинг: 0 / 0
(Struts) validate & cancel
    #33389127
zirex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FarlenВ struts-config прописать validate="false", а из action вызвать метод someForm.validate и если errors.notEmpty(), то
if (!errors.isEmpty()) {
saveErrors(request, errors);
return mapping.findForward("edit");
}

Спасибо. Это вариант - пока так и сделал. Но наверное есть возможность это как-то почеловечески сделать? Или такая уж у стратсов политика? ;)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / (Struts) validate & cancel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]