2010-06-18 47 views
0

我是新來的檢票口,並試圖讓一些事情工作。
有一件事讓我非常惱火,就是當頁面出現語法錯誤時,我會得到一個空白(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 

我改變了標籤標識的東西不同,那麼源文件需要什麼。
如果我運行這個代碼,我會得到已經提到的空白頁面。
但是,對於具有這種語法錯誤的頁面的每個請求,我都會在約1000行以上的日誌文件中獲得錯誤報告。這個錯誤報告基本上只是用於描述錯誤的頁面生成的html。
這讓我想知道爲什麼wicket不顯示錯誤的東西,而不是空白頁。我對wicket不是很有經驗,但對我來說,它看起來像wicket無法渲染自己的錯誤頁面代碼。

這將是很高興知道如何找到與wicket語法錯誤。
通過一個1000多行錯誤報告來讀取像錯誤字符這樣的小錯誤似乎有點乏味。

預先感謝指導我到正確的方向:)

PS


檢票版本:1.4.9
期:開發

回答

0

我無法確認該行爲。我去了http://wicket.apache.org/quickstart.html並創建了一個快速入門。改變從「信息」向「MESSAGE1」檢票ID並獲得在碼頭一個很好的描述頁面:

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. 

你是如何創建項目?

+0

葉普發現了這個問題。我一直在使用apache-ivy來解決項目依賴關係。這也將獲取wicket-1.4.9-javadoc.jar。用於呈現錯誤報告的頁面存在於兩個jar中,但是當類加載器搜索該文件時,它將從javadoc jar中獲取該頁面。由於渲染錯誤頁面失敗,我結束與空白頁。 我現在將javadoc.jar從beeing「黑名單」複製到部署目錄,以便獲取正確的錯誤頁面。 – Philipp 2010-06-21 16:27:55

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」你至少獲得,而不是將其視爲部署後發生故障的應用程序的一部分測試失敗。

這當然不是一個完整的解決方案,因爲這個錯誤會使頁面的任何渲染測試失敗,特定的失敗只會給測試結果中的長錯誤信息,但至少您不必搜索日誌文件。