我是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
阶段:发展
答案 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.
您是如何创建项目的?