2010-11-15 27 views
6

Tôi đang sử dụng đường nối 2.2, các khung hình làm lớp trình bày xem. Tôi sẽ viết một số loại cơ sở hạ tầng để nắm bắt tất cả các ngoại lệ. Ví dụ tôi đặt trong một Facelets sau đoạn mã:Các ngoại lệ được tập trung vào đường may

<p:commandButton actionListener="#{mySeamController.aMethod()}" 

trong lớp MySeamController, các phương pháp trên:

public void aMethod() 
{ 
    throw new NullPointerException(); 
} 

trong bộ điều khiển i viết một phương pháp:

@Observer("myapp.exceptions.exception") 
public void onSystemException(Exception e) 
{ 
    System.out.println("a exception was occurred"); 

} 

tôi viết một lớp học để bắt ngoại lệ:

@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); 

} 
} 

nhưng tôi đã nhận thấy taht khi tôi sử dụng một ActionListener

<p:commandButton actionListener="#{mySeamController.aMethod()}" 

thay vì một hành động

<p:commandButton action="#{mySeamController.aMethod()}" 

không phải ngoại lệ đã được quan sát bởi lớp ExceptionHandler. Tại sao? Có ai giúp được không? Trân trọng

+0

Bạn đã bao giờ giải quyết vấn đề này chưa? Đây không phải là một giải pháp, nhưng để tiết kiệm cho mình một số rắc rối, hãy xem mã nguồn của lớp Exceptions. Nó làm tăng các sự kiện cho các ngoại lệ, vì vậy bạn không phải tạo một trình xử lý trung gian: Events.instance(). RaiseEvent ("org.jboss.seam.exceptionNotHandled", e); Events.instance(). RaiseEvent ("org.jboss.seam.exceptionHandled", nguyên nhân); Tôi sử dụng điều này để theo dõi trường hợp ngoại lệ phiên người dùng (ít nhất là trường hợp ngoại lệ Seam). – gebuh

Trả lời

0

Tạo máy đánh chặn và bạn sẽ có thể bắt bất cứ thứ gì mình cần.

Các vấn đề liên quan