Jindřich Recina wrote:
Dobry den, mam dva dotazy.1)Pri obsluze web. formulare odesilam data pomoci metody post. Na serveru je zpracuji a rizeni predam z5 na stranku s formularem, pod nimz je tabulka dat, ktere se zadavaji ve formulari. Problem je v refresoni teto stranky, ze ktere jiz jednou data odesla. Vim o tomto fenomenu, ale netusim, jak jej resit v ramci STRUTS. Na phpcku jsem mel formular, ktery jsem posilal na server, kde byl skript v jine strance (nevizualni). V tomto skriptu jsem zpracoval data a pomoci redirectu predal rizeni z5 na stranku, tak jsem se zbavil ulozenych dat v prohlizeci. Jak a kde toto zaridit ve STRUTSech? V classe Action, ActionForm? nebo pomoci nejakych tagu?
Ja v tom nevidim problem. Action je presne to, co v PHPcku bylo simulovane pomoci nevizualni stranky. A pokud potrebujete, aby
po POSTu byl proveden redirect na stranku ziskanou GETem,
staci v strust-config.xml nastavit akci atribut redirect="true", napr.
<action path="/uloz" type="cz.moje.UlozDataAction">
<forward name="uspech" path="/zobraz.do" redirect="true" />
<forward name="chyby" path="formular.jsp" />
</action>
2)No a druhy dotaz souvisi (castecne) s tim prvnim. Opet mam formular, odeslu ho na server - ted napr. metodou GET, cast dat si vlozim do session a vratim se z5 - na puvodni formular, kde zobrazim data, ktera mam v session. No, a ted kdyz si stranku refresnu, tak tato data se neustale zobrazuji, nebot jsou v session, ale to ja nechci. Chci, aby se data ze session zobrazila pouze poprve. Po refreshi uz v sessions nebudou. V php jsem to delal tak, ze jsem na zacatku www stranky precetl vsechno ze session a ulozil vse do promennych a data ze session smazal. Pri refreshi uz v session nebyly. Jak mam podobne chovani naprogramovat v STRUTS? Pres tagy? Jake? Nebo jinak?
Pokud nechcete, aby neco bylo v session, tak to do session nedavejte.
Mate k dispozici tri ruzne "scope", v JSP dokonce 4:
- page (v ramci JSP stranky - fragmentu webove stranky)
- request (jedno zavolani od prohlizece - jedna webova stranka)
- session
- application (totez co ServletContext, sdileno uzivateli)
Takze to co chcete udelat pravdepodobne je:
1) v Action.execute() nejak ziskate data a ulozite je do requestu
pomoci request.setAttribute()
2) ukoncite Action.execute() pomoci
return mapping.findForward("mamdata");
3) ve struts-config.xml nastavite, ze se ma pokracovat rovnou
na nejakou JSP stranku (bez redirectu, ten by data smazal)
<action path="/zobraz" type="cz.moje.ZobrazDataAction">
<forward name="mamdata" path="zobraz.jsp" />
</action>
4) v zobraz.jsp ty data vytahnete z atributu requestu, treba pomoci JSTL:
<c:out value="${data} />
To je cele. Pri jakemkoliv dalsim requestu uz ta data neexistuji,
protoze byly atributem requestu.
Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno Martin Kuba
Institute of Computer Science email: [EMAIL PROTECTED]
Masaryk University http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ mobil: +420-603-533775
--------------------------------------------------------------
smime.p7s
Description: S/MIME Cryptographic Signature
