Starší komentáře ke článku: Jakarta Struts - akce a formuláře
Zpět na článek | Úvodní stránka Interval.cz
Datum vložení: 29.1.2003 1:44:02
na vikend ked sa na to pozriem lepsie....
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.
Datum vložení: 29.1.2003 10:25:41
Dobry clanek, tesim se na pokracovani.
Prave neco takoveho jsem hledal.
dekuji.
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");
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. :)
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.
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>.
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.
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>.
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.
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.
Datum vložení: 30.1.2003 17:10:22
OK, vdaka za vysvetlenie !
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...
Datum vložení: 7.1.2005 15:31:27
stejny problem...
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?
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 ;-)
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 :-(
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...
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.
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.
Datum vložení: 17.5.2003 13:45:52
Planujete neco takoveho zminit v dalsich dilech serialu?
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ů.
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.
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á.
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.
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.
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í).
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 ...
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.
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
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
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
Datum vložení: 6.6.2007 17:14:56
nezabudol si na nic :o) funguje to dik