0

我有处理我的后端连接的 pojo 类。我想通过在内部捕获后端异常来将我的(后端)错误处理封装在这些类中。

有什么方法可以访问当前的检票口页面(或任何组件),以使我能够从检票口组件层次结构之外向用户提供反馈?

class MyService {
...
public void doBackEndThing(){
    try {
        backEndService.doRemoteCall();
    } catch (BackendException e) {
        //we're not inside the component hierarchy! so no getPage() available
        WebPage page = getCurrentPage(); 
        page.error("Backend is currently not available");
    }
}

我试过 PageManager,但我不知道如何检索正确的版本,所以我不知道是否可以工作:

int version = ?;
WebPage page = (WebPage )Session.get().getPageManager().getPage(version);
4

2 回答 2

1

IRequestCycleListener#onException() 是一个更好的地方 - 您可以通过 RequestCycle#getActiveRequestHandler() 访问当前页面。

于 2014-03-29T09:02:27.563 回答
1

没有一个好的方法,而且这样做似乎不是一个好主意。你的前端应该调用你的后端而不是其他方式。因此,最简单的方法是将错误存储在您的服务中并让您的页面获取这些错误。

class MyService {

    private String error;

    public void doBackEndThing(){
        try {
            backEndService.doRemoteCall();
        } catch (BackendException e) {
           error ="Backend is currently not available";
        }
    }
}

class MyPage extends WebPage {

    private MySerivce service;

    public void doSomethingFrontendy() {

        error = service.getError();
    }
}

或者你可以从你的后端方法返回一个错误,或者抛出一个异常并在你的网页中处理它,或者像@svenmeier 指出的那样使用 IRequestCycleListener#onException() 。

于 2014-03-29T13:19:19.157 回答