Dikiş 2.2'yi, sunum sunusu katmanı olarak kullanıyorum. Tüm istisnaları yakalamak için bir çeşit altyapı yazabilirim.Dikiş merkezi istisnaları
@Observer("myapp.exceptions.exception")
public void onSystemException(Exception e)
{
System.out.println("a exception was occurred");
}
i bir yöntem yazmak
public void aMethod()
{
throw new NullPointerException();
}
denetleyicisi: MySeamController sınıfında
<p:commandButton actionListener="#{mySeamController.aMethod()}"
, yukarıdaki yöntemle: Örneğin kod parçasının izlenerek facelets koymak İstisnaları yakalamak için bir sınıf yazarım:
@Scope(ScopeType.APPLICATION)
@BypassInterceptors
@Install(precedence = Install.MOCK, classDependencies = "javax.faces.context.FacesContext")
@Name("org.jboss.seam.exception.exceptions")
public class ExceptionHandler extends org.jboss.seam.exception.Exceptions{
private static final long serialVersionUID = 1L;
@Logger
Log log;
public void handle(Exception e) throws Exception
{
Events.instance().raiseEvent("myapp.exceptions.exception", e);
super.handle(e);
}
}
ama ActionListener
<p:commandButton actionListener="#{mySeamController.aMethod()}"
yerine bir eylem
<p:commandButton action="#{mySeamController.aMethod()}"
istisna ExceptionHandler sınıfı tarafından gözlenmiştir kullandığınızda i taht fark ettik. Neden? Biri yardım edebilir mi? Saygılarımızla
Bunu hiç çözdünüz mü? Bu bir çözüm değil, ancak bazı sorunlardan kurtulmak için, Exceptions sınıfı kaynak koduna bakın. İstisnalar için olayları kaldırır, bu yüzden bir ara işleyici oluşturmanız gerekmez: Events.instance(). RaiseEvent ("org.jboss.seam.exceptionNotHandled", e); Events.instance(). RaiseEvent ("org.jboss.seam.exceptionHandled", neden); Kullanıcı oturumu istisnalarını izlemek için kullanıyorum (en azından Seam istisnaları). – gebuh