java - 访问 wicket 组件层次结构之外的 Wicket 页面对象

标签 java wicket wicket-1.6

我有 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/

相关文章:

java - 在 Java 游戏中计算 FPS

java - 如何在 Wicket 口表中打印对象列表?

java - 将 Spring REST 服务与 Wicket 结合起来

java - Wicket CheckGoup 获取选中的项目 markupIds

java - Wicket - 使用 map 的条目值作为模型中的对象,其中我知道每个组件的键

java - 监控(记录)不同线程的执行

java - GUID可以包含反斜杠(\)吗?

java - 在java中更改自动伸缩组的所需容量

html - 如何使用 CSS 对齐列以便它们共享整个面板

java - Wicket 6.13 链接 onclick 行为不适用于 ajax onclick 行选择