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
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem