Java 语法错误导致空白页

Java 语法错误导致空白页,java,wicket,Java,Wicket,我是wicket的新手,正在努力让一些东西发挥作用。 有一件事让我非常恼火,那就是每当一个页面出现语法错误时,我就会得到一个空白(0个字符的文本)页面 分条示例: Test.html header stuff: doctype ... html ... head ... body ... <span wicket:id="msgTest" id="message">MSG</span> footer stuff: /body ... /html 这将按预期输出页面。

我是wicket的新手,正在努力让一些东西发挥作用。
有一件事让我非常恼火,那就是每当一个页面出现语法错误时,我就会得到一个空白(0个字符的文本)页面

分条示例:
Test.html

header stuff: doctype ... html ... head ... body ...
  <span wicket:id="msgTest" id="message">MSG</span>
footer stuff: /body ... /html
这将按预期输出页面。
现在,让我们介绍一个错误:

header stuff: doctype ... html ... head ... body ...
  <span wicket:id="msgTest2" id="message">MSG</span>
footer stuff: /body ... /html
标题内容:doctype。。。html。。。头身体
味精
页脚内容:/body/html
我将标签id更改为与源文件期望的不同的内容。
如果我运行此代码,就会得到前面提到的空白页。
然而,对于每一个带有这种语法错误的页面请求,我都会在大约1000多行的日志文件中得到一个错误报告。此错误报告基本上只是wicket生成的描述错误的页面html。
这让我想知道为什么WIKET不显示错误的东西而不是空白的页面。我对wicket不是很有经验,但对我来说,wicket在呈现自己的错误页面代码时似乎遇到了麻烦

很高兴知道如何使用wicket查找语法错误。
阅读1000多行错误报告中的一个小错误,比如一个放错地方的字符,似乎有点乏味

提前感谢您为我指引了正确的方向:)

附言:
wicket版本:1.4.9

阶段:开发

我喜欢做的是使用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”,您至少会得到一个测试失败,而不是在部署后将其视为失败应用的一部分


这当然不是一个完整的解决方案,因为此错误将导致页面的任何呈现测试失败,并且特定的失败只会在测试结果中给出一条很长的错误消息,但至少您不必搜索日志文件

我无法证实这种行为。我转到并创建了一个快速启动。将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.

您是如何创建项目的?

Yepp,发现了问题。我一直在使用ApacheIvy来解决项目依赖关系。这也将获取wicket-1.4.9-javadoc.jar。用于呈现错误报告的页面在两个jar中都存在,但是当classloader搜索文件时,它将从javadoc jar中获取该文件。作为渲染的结果,错误页失败,我用空白页结束UF。现在,我将来自being的javadoc.jar“黑名单”复制到部署目录,以便获取正确的错误页面。
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.