Article View: pl.comp.lang.java
Article #141639Re: Struts - walidacja formularzy
From: Krzysiek Zaporowski
Date: Wed, 15 Oct 2008 06:27
Date: Wed, 15 Oct 2008 06:27
132 lines
5825 bytes
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-mailReferences:
<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