2014-10-18 3 views
1

양식이있는 페이지가 몇 개 있습니다. 모든 양식에는 제출 용으로 AjaxButton, 피드백 용 패널에는Wicket FeedbackPanel이 표시되지 않습니다.

<div wicket:id="feedback"></div> 

이 있습니다. 하나의 입력란을 나가는 경우 모든 양식 입력란은 필수이며 FeedbackPanel은 유효성 검사기의 오류 메시지로 올바르게 채워집니다. 문제는 브라우저에서 "뒤로"다음 페이지를 다시 볼 수있는 "앞으로"페이지페이지 내에서 아무리 상관없이 그 메시지가 표시됩니다.

뒤로/앞으로 제스처까지 오류 메시지는 나타나지 않지만 양식이 onSubmit()에 도달하지 않습니다 (분명히 유효성 검사 오류가 있음).

문제는 양식이있는 모든 페이지와 FeedBackPanel에 공통적입니다. 모든 페이지는 어떤 차이가있을 수 있기 때문에 부트 스트랩 3.2.0을 사용합니다.

무슨 일인지에 대한 단서가 있습니까?

답변

2

Ajax를 사용하는 경우 업데이트 할 구성 요소를 AjaxRequestTarget에 추가해야합니다. Ajax에서 업데이트 할 구성 요소에는 사전 정의 된 마크 업 ID가 있어야합니다.

그래서, 당신은 당신의 FeedbackPanel에 대한 setOutputMarkupId(true) 메서드를 호출하고 오버라이드 (override) 할 필요가 onError 방법 AjaxButton에 대한 :

... = new AjaxButton (...) { 

     ... 

     @Override 
     protected void onError(final AjaxRequestTarget target, final Form form) { 
      /*here add your feedback panel to be updated via ajax*/ 
      target.addComponent(feedbackPanel); 
     } 
    } 
관련 문제