🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.java
Article #141639

Re: Struts - walidacja formularzy

#141639
From: Krzysiek Zaporowski
Date: Wed, 15 Oct 2008 06:27
132 lines
5825 bytes
On 14 Paź, 23:37, wowerson <mtrelin...@interia.pl> wrote:
> Witam
> chciałbym mieć akcję, która wyswietla listę rekordów a kiedu kliknę w
> jeden z nich wyświetli formularz edycji.
>
> W tym momencie mam coś takiego
>
> struts-config.xml
>
>   <form-beans>
>         <form-bean name="testForm" type="TestForm" />
>   </form-beans>
>   <action path="/test" type="TestAction" input="/form.jsp"
> name="testForm" parameter="method" validate="true">
>         <forward name="save" path="/save.jsp" />
>         <forward name="list" path="/list.jsp" />
>         <forward name="form" path="/form.jsp" />
>         <forward name="error" path="/error.jsp" />
>   </action>
>
> TestAction.java
>
> import javax.servlet.http.HttpServletRequest;
> import javax.servlet.http.HttpServletResponse;
>
> import org.apache.struts.action.ActionForm;
> import org.apache.struts.action.ActionForward;
> import org.apache.struts.action.ActionMapping;
> import org.apache.struts.actions.DispatchAction;
>
> public class TestAction extends DispatchAction {
>
> public ActionForward save(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) throws
> Exception {
>         String forward = "save";
>         try{
>                 System.out.println("sejwujemy");
>         }
>         catch(Exception e){
>                 e.printStackTrace();
>         }
>         return mapping.findForward(forward);
>
> }
>
> public ActionForward form(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) throws
> Exception {
>         String forward = "form";
>         try{
>                 System.out.println("formujemy");
>         }
>         catch(Exception e){
>                 e.printStackTrace();
>         }
>         return mapping.findForward(forward);
>
> }
>
> public ActionForward list(ActionMapping mapping, ActionForm form,
> HttpServletRequest request, HttpServletResponse response) throws
> Exception {
>         String forward = "list";
>         try{
>                 System.out.println("listujemy");
>         }
>         catch(Exception e){
>                 e.printStackTrace();
>         }
>         return mapping.findForward(forward);
>
> }
> }
>
> TestForm.java
>
> import javax.servlet.http.HttpServletRequest;
>
> import org.apache.struts.action.ActionErrors;
> import org.apache.struts.action.ActionForm;
> import org.apache.struts.action.ActionMapping;
> import org.apache.struts.action.ActionMessage;
>
> public class TestForm extends ActionForm {
>
>         String name;
>
>         public String getName() {
>                 return name;
>         }
>
>         public void setName(String name) {
>                 this.name = name;
>         }
>
>         public ActionErrors validate(ActionMapping mapping,
> HttpServletRequest request) {
>                 ActionErrors errors = new ActionErrors();
>                 if(name == null || name.length() == 0){
>                         errors.add("name", new ActionMessage("pusto"));
>                 }
>                 return errors;
>         }
>
> }
>
> no i pliki jsp - w nich za duzo nie ma
>
> Problem jest nastepujący - kiedy klikam test.do?method=list struts
> tworzy mi automatycznie formularz i wywołuje zdefiniowaną w nim metodę
> validate:( Ponieważ przy wchodzeniu na widok listy nie ma przesylanych
> żadnych danych z forma validacja jest niepoprawna i przenosi mnie na
> formularz a nie na listę:( Jak tego uniknąć? jak zrobić coś takiego
> żeby było ładnie?:)
>
> Pozdrawiam

Rozumiem, ze chodzi o Struts 1.x.
Formularz tworzony jest w momencie, gdy wywolywana jest akcja majaca
ten formularz zadeklarowany w atrybucie "name".
Moze utworz osobna akcje do wyswietlania, a osobna (z formularzem) do
edycji?
Mozesz ustawiac rowniez zmienna formularza, ktora w JSP bedzie
reprezentowana jako hidden i ustawiana tylko w przypadku wyswietlenia
strony z formularzem.
Wtedy w validate mozesz sprawdzic jej wartosc. Pamietaj o resetowaniu
zmiennej w metodzie reset().
Zasady dzialania formularza sa dosc dobrze opisane tutaj:
http://www.theserverside.com/tt/articles/article.tss?l=StrutsActionMapping

Pozdrawiam
Technical Details
Message-ID: <5fb0df42-7e11-4eee-8b07-3ea8195daba2@31g2000prz.googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!31g2000prz.googlegroups.com!not-for-mail
References: <07c9c31f-8673-40b6-919c-f1f60c362c4d@p10g2000prf.googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!feed.news.interia.pl!news.nask.pl!news.nask.org.pl!goblin1!goblin.stu.neva.ru!postnews.google.com!31g2000prz.googlegroups.com!not-for-mail
From: Krzysiek Zaporowski <krzysiek.zaporowski@googlemail.com>
Newsgroups: pl.comp.lang.java
Subject: Re: Struts - walidacja formularzy
Date: Tue, 14 Oct 2008 23:27:34 -0700 (PDT)
Organization: http://groups.google.com
Lines: 139
Message-ID: <5fb0df42-7e11-4eee-8b07-3ea8195daba2@31g2000prz.googlegroups.com>
References: <07c9c31f-8673-40b6-919c-f1f60c362c4d@p10g2000prf.googlegroups.com>
NNTP-Posting-Host: 193.178.240.30
Mime-Version: 1.0
X-Trace: posting.google.com 1224052054 9524 127.0.0.1 (15 Oct 2008 06:27:34 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Wed, 15 Oct 2008 06:27:34 +0000 (UTC)
Complaints-To: groups-abuse@google.com
Injection-Info: 31g2000prz.googlegroups.com; posting-host=193.178.240.30;  posting-account=o7EYfQoAAAAPP0Qa6ULads9fPjAy0Zsc
User-Agent: G2/1.0
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.0.3)  Gecko/2008092417 Firefox/3.0.3,gzip(gfe),gzip(gfe)
X-HTTP-Via: 1.1 proxy.wasko.pl:8080 (squid/2.5.STABLE9)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit