Starší komentáře ke článku: Jakarta Struts - akce a formuláře

Zpět na článek | Úvodní stránka Interval.cz

Avatar

Autor komentáře: Ondrej Ivanic

Datum vložení: 29.1.2003 1:44:02

na vikend ked sa na to pozriem lepsie....

Avatar

Autor komentáře: Roman Pichlík

Datum vložení: 29.1.2003 8:16:48

Minule jsem sice kibicoval cosi o xml a xsl, ale vcera se mi do ruky dostal novy Oracle magazin a tam je Struts venovano celkem velke misto ba co vic Oracle tuto technologii vychvaluje jak muze.
Clanek se mi libi ve spojeni stim co jsem si precetl minule, dnes a vcera v magazinu se mi Struts zacina zamlouvat asi mu budu venovat par hodin studia :-), samozrejme se taky tesim na dalsi clanky, jen vice a houst.

Avatar

Autor komentáře: Moby

Datum vložení: 29.1.2003 10:25:41

Dobry clanek, tesim se na pokracovani.
Prave neco takoveho jsem hledal.

dekuji.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 29.1.2003 11:33:03

Do kodu RegistrationAction zverejneho v clanku se mi vloudily dva preklepy:

1, tato trida - jak je v textu uvedeno - opravdu extenduje org.apache.struts.action.Action, tedy jeji spravna deklarace je
public class RegistrationAction extends Action {

2, metoda execute samozrejme nevraci ten syntakticky nesmysl, co je zminen v clanku, spravne ma na poslednim radku byt
return mapping.findForward ("success");

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 29.1.2003 14:01:38

A jeste jedna oprava:

V treti kapitole (o akcich) pisu na zacatku druheho odstavce:

<I>"Rozhraní Action nám předepisuje jednu jedinou metodu - execute"</I>

Za tento ne preklep, ale vysloveny blabol se obzvlast omlouvam, nebot:
- Action (jak je zrejme i z ukazek kodu) neni rozhrani, nybrz trida
- metoda execute neni "predepsana" ve smyslu rozhrani ci abtraktni metody z duvodu zpetne kompatibility. To nic ale nemeni na tom, ze aby nase akce byla co k cemu, meli bychom tuto metodu implementovat.

Nastesti aspon hruby smysl je stejny, doufam tedy, ze vas tento omyl prilis nezmatl. :)

Avatar

Autor komentáře: Marek

Datum vložení: 30.1.2003 15:27:31

Mal by som jednu otazku ohladom mapovania akcii (<action-mappings>) v subore struts-config.xml.
Vie mi niekto vysvetlit, aky je rozdiel medzi <I>attribute</I> a <I>name</I> v sekcii action ? Pokial viem, tak oboje hovori o tom, aky form bean sa pouzije pri tejto akcii (pouzije sa class definovany v sekcii Form Bean Definition v struts-config.xml), ale nie je mi jasne, kedy pouzit <I>attribute=mojForm</I> a kedy pouzit <I>name=mojForm</I>.
Vdaka.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 30.1.2003 15:40:18

Parametr <I>name</I> se primarne odkazuje na formular definovany vyse v sekci <I>form-beans</I>.
Druhotny efekt pouziti tohoto parametru je v tom, ze se toto jmeno pouzije i pro ulozeni formulare do prisluneho scope.

Pokud se tedy chcete odkazat na formular definovany v <I>form-beans</I> pod jmenem <I>XY</I>, ale z nejakych duvodu prislusnou beanu potrebujete ukladat pod jmenem jinym, pouzijte parametru <I>attribute</I>.

Avatar

Autor komentáře: Marek

Datum vložení: 30.1.2003 16:12:40

...za odpoved. V Struts len zacinam.
Takze ak som spravne pochopil, ak ak pouzijem <I>name</I>, tak pod tymto menom sa mi bean ulozi bud do session, alebo do request (podla parametru scope). Automaticky ? Nie je potrebne to naprogramovat v prislisnej xxxAction ?
Ak ale pouzijem <I>attribute</I>, bean sa neulozi pod tymto menom v prisl. scope, ale musim zabezpecit sam jeho ulozenie ?
Neviem, ci sa vyjadrujem dost zrozumitelne, snazim sa prenikat do Struts a prave rozoberam priklad, ktory je zahrnuty v distribucii Struts (struts-example) a nasiel som tu nejake nezrovnalosti...

PS: Inak, clanok je velmi dobry, uz sa tesim na pokracovanie.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 30.1.2003 16:18:33

At pouzijete <I>name</I> nebo <I>attribute</I>, v obou pripadech se vam form bean ulozi <B>automaticky</B> do prislusneho scope.

Btw v obou pripadech se k tomuto jmenu muzete v <I>execute</I> metode prislusne akce dostat pomoci volani <I>mapping.getAttribute()</I>.

Avatar

Autor komentáře: Marek

Datum vložení: 30.1.2003 16:37:44

Takze skusim priklad:
.
.
.
<!-- Registration form bean -->
<form-bean
name="registrationForm"
type="org.apache.struts.webapp.example.RegistrationForm"/>
.
.
.
<!-- Edit user registration -->
<action
path="/editRegistration"
type="org.apache.struts.webapp.example.EditRegistrationAction"
attribute="registrationForm"
scope="request"
validate="false">
<forward name="success" path="/registration.jsp"/>
</action>

<!-- Save user registration -->
<action
path="/saveRegistration"
type="org.apache.struts.webapp.example.SaveRegistrationAction"
name="registrationForm"
scope="request"
input="registration"/>

Toto je cast struts-config.xml z prikladu struts-example. Nie je mi jasne, preco je raz name=... a raz attribute=...
Ale mozno na to idem zo zlej strany... :-) No nic, asi si to necham lepsie prejst hlavou.
Kazdopadne vdaka za Vas cas.
M.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 30.1.2003 17:04:59

Kdyz se na ten priklad podivate podrobneji, vsimnete si, ze EditRegistrationAction nezpracovava zadny formular. Proto neni nutne, aby Struts pred volanim teto akce vytvarely z request parametru instanci prislusne beany (k cemuz je parametr <I>name</I> nutny).

Tato akce pouze vytvari vlastni instanci RegistrationForm, a jejim vysledkem je vlastne jen zobrazeni predvyplneneho formulare.

Bylo by samozrejme mozne pouzit i pouze <I>name</I>, ale bylo by to zbytecne - jen by se pred volanim EditRegistrationAction zbytecne instanciovala RegistrationForm. Proto se autori prikladu spokojili s pouhym <I>attribute</I>, aby ta akce vedela, pod jakym jmenem ma onen formular ulozit do prislusneho scope.

Avatar

Autor komentáře: Marek

Datum vložení: 30.1.2003 17:10:22

OK, vdaka za vysvetlenie !

Avatar

Autor komentáře: Jíra

Datum vložení: 3.4.2003 20:28:27

Nějak se mi nedaří stáhnout příklad. Má někdo podobný problém? Pokud ano a povedlo se Vám jej vyřešit prosím o radu...

Avatar

Autor komentáře: Miroslav Holubec

Datum vložení: 7.1.2005 15:31:27

stejny problem...

Avatar

Autor komentáře: Glin

Datum vložení: 4.2.2005 22:16:06

Stejny problem..a vubec, jak ctu ty starsi clanky(jsp apodobne), tak zadny ukazkovy priklad atd. se mi nepodarilo stahnout/podivat se na nej na web (vsechno odkazy mimo interval.cz)..nechtela by redakce tyhle veci presunout na interval.cz a upravit odkazy?

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 4.2.2005 22:54:39

Žádný strach, redakce o tom ví, redakce na tom pracuje. Nejde ale všechno okamžitě - není snadné ukočírovat tolik různých technologií na jednom webu ;-)

Avatar

Autor komentáře: Lukáš Till

Datum vložení: 19.4.2006 14:50:56

Rok a neco ubehl a situace je porad stejna :-( Nikdo redakci interval.cz nenuti k tomu, at ma na svem serveru dostupne vsechny technologie (a fungovaly tak vsechny odkazy na vyzkouseni). Je ale slusnosti redakce poskytnout svym redaktorum a autorum clanku vlastni FTP server, kde mohou ruzne soubory (ukazky a zejmena baliky zdrojovych kodu) ulozit. To si myslim neni az tak velky problem. Pak by se serialy nehemzily tolika nefunkcnimi odkazy :-(

Avatar

Autor komentáře: Vilém Málek

Datum vložení: 19.4.2006 15:03:51

Nikdo autory nedonutí k tomu, aby redakci poskytli původní podklady, které hostovali či vystavovali na svých webech. Vše ostatní, co má redakce k dispozici na svých systémech, je bez problémů dostupné a většinou i funkční, nejedná-li se o ukázku nějaké již neexistující technologie...

Avatar

Autor komentáře: Martin Kucera

Datum vložení: 17.5.2003 13:43:44

Zajimala by mne moznost pouzivat Hibernate ve spolupraci se Struts. Je to zajimave reseni, ci zbytecnost? Teziste me aplikace je v praci s databazi, proto by mne zajimalo, ci staci nastroje obsazene ve Struts, nebo je Hibernate pro dataovou persistenci o tolik silnejsi nastroj, ze se vyplati vrhnout se na studium (mimochodem velmi dukladneho) manualu. Diky za reakce.

Avatar

Autor komentáře: Jméno a příjmení

Datum vložení: 18.5.2003 16:34:55

Predevsim je to podle mne nesmyslna otazka.
Neco, jako kdybyste se ptal, jestli jde pouzivat Struts s EJB. Nebo jestli je možné mít v jedné kanceláři lampu a židli.

Ano, jde to a urcite to neni spatny napad, ale vzhledem k tomu, ze to jsou svym zamerenim zcela mimobezne technologie, neni prakticky o cem psat.

Proste pokud umite pouzivat Hibernate (byt ne zrovna dohromady se Struts), a pokud umite pouzivat Struts (byt ne zrovna dohromady s Hibernate), pak umite i pouzivat Hibernate ve spolupraci se Struts.

Avatar

Autor komentáře: Martin Kucera

Datum vložení: 17.5.2003 13:45:52

Planujete neco takoveho zminit v dalsich dilech serialu?

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 28.5.2003 11:06:09

Rozhodně neplánuji, nic takového jsem nikdy nedělal a kvůli článku s tím nezačnu :-)

Navíc mi to nepřijde jako dobrý nápad už proto, že použitím něčeho jiného než JSP přijdeme o výhodu Strutsích formulářových tagů.

Avatar

Autor komentáře: Martin Kucera

Datum vložení: 30.5.2003 12:30:55

To je škoda ;-) Mně se to, co nabízí freemarker dost líbí, a když si čtu <a href='http://www.freemarker.org/docs/pgui_misc_servlet.html' target='_blank'>http://www.freemarker.org/docs/pgui_misc_servlet.html</a> tak se nemohu ubránit dojmu, že *.ftl nabízí hezčí formou to samé, co *.jsp. Poznamenávám, že jen teoretizuji, protože zkušenosti nemám. Dosud jsem psal v php a v javě mám za sebou jen několik servletů, db-pool atd. Nyní chci stávajíci intanetovou aplikaci napsanou v php, kde prakticky o nic jiného, než o formuláře nejde, přepsat, s hojným využitím http tunnelingu a jako vždy jsem pln obav, že prošmejdím stovky slepých uliček, což jsem už učinil i původní volbou php.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 30.5.2003 12:45:42

OK, z toho URL soudím, že jsem FM trochu podcenil, vypadá to použitelně.
Nicméně opravdu se tím v dohledné době nechystám zabývat. Na druhou stranu věřím, že pokud se do toho pustíte, tak Marek Šalanda vás článek na toto téma jistě uvítá.

Avatar

Autor komentáře: Martin Kucera

Datum vložení: 30.5.2003 13:02:00

Nechtěl jsem vás přemlouvat, abyste začal studovat FM... :-) Což o to, pustím se do toho, ale nerad bych snižoval odbornou úroven intervalu mým článkem. :-) Mimochodem, dlouho jsem tady nebyl, a mezitím se to tu hodně zlepšilo, především vaše pojednání o Struts bych nechtěl srovnávat s tím na root.cz.

Avatar

Autor komentáře: tom

Datum vložení: 22.10.2003 10:53:22

Dobry den,
mam dotaz - je mozne mit v beanu atribut typu Date? mam nasledujici metody get a set:

private Date myDate;

public Date getMyDate() {
return myDate;
}

public void setMyDate(String date) {
SimpleDateFormat inputFormat = new SimpleDateFormat("dd.MM.yyyy");
try {
this.myDate = inputFormat.parse(date);
} catch(Exception e) { ... }
}

ve formulari mam polozku
<html:text property="myDate" />

Bohuzel hodnota se do beanu nepreda a pritom neni vypsana chyba...
Cele funguje, pokud vubec nikde nemam Date ale vsechno jako String.
Dekuji za radu.

Avatar

Autor komentáře: Pavel Kolesnikov

Datum vložení: 22.10.2003 11:29:40

1, principálně vám samozřejmě nic nebrání mít ve form-beaně property třídy java.util.Date nebo třeba cz.firma.util.Brekeke :-)

2, problém ve vámi uváděném případu podle mne tkví v tom, že getter vrací Date, kdežto setter bere String - takhle se myslím property beany nechová

3, osobně bych přesto doporučil používat v properties formulářových bean String. Reflektuje to podstatu věci, a umožňuje Vám to při neúspěšné validaci předvyplnit formulář zadanými údaji (pokud do textboxu, jemuž odpovídá Date, zadáte "brekeke", pak se tato hodnota při konverzi do Date pochopitelně ztratí).

Avatar

Autor komentáře: Jakub

Datum vložení: 19.3.2005 21:35:11

Stažení souboru s příkladem nechodí. Ocenil bych, kdyby si autoři nedávali příklady k sobě na web, ale dali to na interval.cz, protože tam má čtenář alespoň jistotu, že se to dá stáhnout i rok po zveřejnění článku ...

Avatar

Autor komentáře: Jiri Hohercak

Datum vložení: 1.5.2005 18:01:56

Zdravím, Pracuji na projektu využívajicí struts. JSP stránky mam kodovane v utf-8. Pro získání dat z formuláře používam DynaValidatorForm. české znaky z formuláře jsou poškozeny. Pravděpodobně špatné určení znakové sady vstupu html:text... Nedovedl by mi nekdo poradit? Děkuji.

Avatar

Autor komentáře: Zdeněk Mach

Datum vložení: 13.9.2005 14:50:54

Měl jsem stejný problém se stránkami ve windows-1250, nakonec jsem použil "getBytes" viz. http://www.linuxzone.cz/index.phtml?ids=2&idc=191

Avatar

Autor komentáře: troll

Datum vložení: 2.5.2007 12:54:19

sprav si napr. triedu: ------------------------------ package xxx; import javax.servlet.*; import java.io.IOException; public class CzechCodingFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request.getCharacterEncoding() == null) { request.setCharacterEncoding("utf-8"); } chain.doFilter(request, response); } public void destroy() { } } -------------------------------------- do web.xml pridaj <filter> <filter-name>coding</filter-name> <filter-class>xxx.CzechCodingFilter</filter-class> </filter> - <filter-mapping> <filter-name>coding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> -------------------------------------- ak som na nic nezabudol tak by to malo fungovat

Avatar

Autor komentáře: troll

Datum vložení: 2.5.2007 12:57:42

tak este raz pretze to tam nie je vsetko vidiet :) sprav si napr. triedu: ------------------------------ package xxx; import javax.servlet.*; import java.io.IOException; public class CzechCodingFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (request.getCharacterEncoding() == null) { request.setCharacterEncoding( "utf-8"); } chain.doFilter(request, response); } public void destroy() { } } -------------------------------------- do web.xml pridaj <filter> <filter-name> coding </filter-name> <filter-class> xxx.CzechCodingFilter </filter-class> </filter> <filter-mapping> <filter-name> coding </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> -------------------------------------- ak som na nic nezabudol tak by to malo fungovat

Avatar

Autor komentáře: KinDo

Datum vložení: 6.6.2007 17:14:56

nezabudol si na nic :o) funguje to dik

Zpět na článek | Úvodní stránka Interval.cz