语法错误导致空白页

时间:2010-06-18 09:09:23

标签: java wicket

我是wicket的新手并试图让一些事情发挥作用 让我烦恼的一件事是,当页面出现语法错误时,我会得到一个空白(0个字符的文本)页面。

条纹化示例:
Test.html

header stuff: doctype ... html ... head ... body ...
  <span wicket:id="msgTest" id="message">MSG</span>
footer stuff: /body ... /html

Test.java

public class Test extends WebPage {
    public Test() {
        add(new Label("msgTest", "Hello, World!"));
    }
}

这将按预期输出页面 现在,让我们介绍一个错误:

header stuff: doctype ... html ... head ... body ...
  <span wicket:id="msgTest2" id="message">MSG</span>
footer stuff: /body ... /html

我将label-id更改为与源文件所期望的不同的内容 如果我运行此代码,我会得到已提到的空白页面 但是,对于具有这种语法错误的页面的每个请求,我在大约1000多行的日志文件中得到错误报告。这个错误报告基本上只是一个描述错误的页面的wicket生成的html 这让我想知道为什么wicket没有显示错误的东西而不是空白页面。我对wicket不是很有经验,但对我而言,看起来wicket无法呈现自己的错误页面代码。

知道如何使用wicket查找语法错误会很高兴 通过1000+行错误报告读取一个小错误,如错位字符似乎有点单调乏味。

提前感谢指导我走向正确的方向:)

PS:
检票口:1.4.9
阶段:发展

2 个答案:

答案 0 :(得分:0)

我喜欢做的是使用WicketTester编写单元测试,以至少验证渲染的内容,并且通常还会编写断言来检查组件。

的内容
@Test
public void testMessageLabel(
    WicketTester tester = new WicketTester();
    tester.startPage(Test.class);
    tester.assertLastRenderedPage(Test.class);
    tester.assertComponent("msgTest", Label.class);
    tester.assertLabel("msgTest", "Hello, World!");
)

然后,如果在您的示例中代码包含“msgTest”并且html包含“msgTest2”,那么您至少会在测试失败后将其视为部署后失败应用程序的一部分。

这肯定不是一个完整的解决方案,因为这个错误会使页面的任何渲染测试失败,特定的失败只会在测试结果中给出一个很长的错误消息,但至少你不必搜索日志文件。

答案 1 :(得分:0)

我无法确认这种行为。我去了http://wicket.apache.org/quickstart.html并创建了一个快速入门。将wicket id从'message'更改为'message1'并在jetty中获得了一个很好的描述性页面:

WicketMessage: Unable to find component with id 'message' in [Page class = com.mycompany.HomePage, id = 0, version = 0]. This means that you declared wicket:id=message in your markup, but that you either did not add the component to your page at all, or that the hierarchy does not match.

您是如何创建项目的?