我有 pojo 类来处理我的后端连接。我想通过捕获内部的后端异常来将我的(后端)错误处理封装在这些类中。
是否有任何方法可以访问当前的 wicket 页面(或任何与此相关的组件),以便我能够从 wicket 组件层次结构外部向用户提供反馈?
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);
最佳答案
没有什么好的方法,而且这样做似乎也不是一个好主意。您的前端应该调用您的后端,而不是相反。因此,最简单的方法是将错误存储在您的服务中,并让您的页面获取这些错误。
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() 。
关于java - 访问 wicket 组件层次结构之外的 Wicket 页面对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714223/