2010-06-18 5 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 

내가 다음 소스 파일이 무엇을 기대하고 뭔가 다른 레이블-ID를 변경 :
지금, 오류를 소개 할 수 있습니다.
이 코드를 실행하면 이미 언급 된 빈 페이지가 나타납니다.
그러나 이러한 구문 오류가있는 페이지에 대한 요청마다 약 1000 회 이상의 로그 파일에 오류 보고서가 표시됩니다. 이 오류보고는 기본적으로 오류를 설명하는 페이지의 wicket 생성 HTML입니다.
이렇게하면 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도 가져옵니다. 오류보고를 렌더링하는 데 사용되는 Page는 두 jar 모두에 있지만 클래스 로더가 파일을 검색하면 javadoc jar에서 파일을 가져옵니다.렌더링의 결과로 오류 페이지가 실패하고 uf가 빈 페이지로 끝납니다. javadoc.jar을 배포 디렉토리에 복사하여 "블랙리스트에 추가"하여 정확한 오류 페이지를 가져 왔습니다. – Philipp

0

내가 무엇을 좋아하는 것은 쓰기 단위 테스트와 WicketTester는 적어도 일들이 렌더링되는지 확인하고, 일반적으로 구성 요소를 확인하기 위해 어설 션을 작성합니다. 코드가 "msgTest"를 포함하고 HTML은 "msgTest2"를 포함하여 예에서와 같이 다음

@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!"); 
) 

의 라인을 따라 뭔가 최소한 대신에 배포 한 후 실패하는 응용 프로그램의 일부로 보는 테스트 실패를 얻는 경우 .

이 오류로 인해 페이지 렌더링 테스트가 실패하고 특정 오류로 인해 테스트 결과에 긴 오류 메시지가 표시 될 수 있지만 적어도 로그를 검색 할 필요는 없으므로 완벽한 해결책은 아닙니다. 파일.