Pouzivame MyFaces 1.1.3 z apache.org

Jaroslav Hurdes

Mirek Stohr wrote:

To je zajimave, protoze tento postup jsem zkousel jako prvni (viz. muj orig. prispevek) a nefungoval, dostaval jsem defaultni stranku s vypisem chyby (jako by errorpage.jsf neexistovala). Jake mate presne verze JSF, kde to provozujete?

             Mirek


Jaroslav Hurdes napsal(a):

U nas to resime jednotne, a to tak, ze vsude vyhazujeme vyjimku FacesException (i v akcich) a ve web.xml mame pridano

<error-page>
 <error-code>500</error-code>
 <location>/common/errorView.jsf</location>
</error-page>

Toto nam zajisti, ze chyba projde do nasi errorView a chybu zobrazime podle nasi predstavy. V zasade by to melo fungovat s jakoukoli RuntimeException.

Jaroslav Hurdes

Mirek Stohr wrote:

Odpovidam si sam (po delsim trapeni Google):
viz.:
http://forum.java.sun.com/thread.jspa?forumID=427&threadID=481177
http://forum.java.sun.com/thread.jspa?threadID=510112&messageID=4283555

Pokud jsem to dobre pochopil, tak situace se ma tak, ze pokud jde o chybu uvnitr action metody nejakeho jsf managed beanu, je treba ji resit tam, tj. mit neco jako

public String doMyAction(){
  try{
    // neco provadim
  } catch(MyException ex){
        // zpracovavam ocekavany vyjimecny stav
  } catch(Exception ex){
        return "error";
  }
}

a ve faces-config.xml mit direktivu
<navigation-rule>
  <navigation-case>
    <from-outcome>error</from-outcome>
    <to-view-id>/errorpage.faces</to-view-id>
  </navigation-case>
</navigation-rule>

Pokud ale dojde k vyhozeni exception uvnitr get/set metody, uvnitr konstruktoru, atd., je situace otevrena a vypada to ze tvurci specifikace JSF na to jaksi pozapomneli, ci patricna cast JSF specifikace je silne nejasna a nikdo tomu nerozumi (diskuze vedou vzdy do ztracena, tj. neni nabidnuto zadne rozumne obecne fungujici reseni).

Toz tak. Snad je to nekomu napomocne. Jak to resite vy?

                    Mirek


Mirek Stohr napsal(a):

Vazeni kolegove,

zkusil jsem si na web aplikaci (EJB3, JSF 1.2, glassfish app. server) jak mi beha errorpage, a vysledkem bylo me prekvapeni, ze mi vubec nebeha, resp. dostanu defaultni errorpage generovanou serverem. Pri nastavovani jsem postupoval presne podle http://wiki.apache.org/myfaces/Handling_Server_Errors, tj.

web.xml:
  <error-page>
    <error-code>500</error-code>
    <location>/errorpage.faces</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.Throwable</exception-type>
    <location>/errorpage.faces</location>
  </error-page>

errorpage.faces:

<f:view>
  <f:verbatim><h1>Interní chyba</h1></f:verbatim>
  <f:verbatim>
    V systému aplikace došlo k interní chybě. Prosím, upozorněte
    mě. Děkuji.
  </f:verbatim>
  <f:verbatim><h4>Chybové hlášení</h4></f:verbatim>
  <h:outputText value="#{errorBean.errorMessage}" />
</f:view>

Kde by mohla byt chyba, resp. jak se pro vyse uvedenou spec. lisi nastaveni errorpage pro zobrazovani internich chyb aplikace? Doposud jsem naivne myslel ze nijak. Diky.

            Mirek











Odpovedet emailem