Tak to je pravd. rozdil mezi JSF 1.1 a JSF 1.2, MyFaces 1.1.3 je pro
specifikaci JSR 127 (viz. http://wiki.apache.org/myfaces/), JSF 1.2 ma
specifikaci JSR 252.
Mirek
Jaroslav Hurdes napsal(a):
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