2010-02-05 2 views
0

2 개의 입력이 있습니다. 단추 (AjaxFallbackButton)를 누르면 해당 입력이 데이터베이스에 저장됩니다.Wicket : AjaxFallbackButton이있는 모달 패널을 사용할 수 있습니까?

입력 중 하나가 10보다 큰 경우 버튼을 누르면 모달 패널을 표시하여 사용자에게 옵션에 대해 확신 할 수 있는지 묻습니다. 그러나 모달 구성 요소가 나타나지 않습니다. 이견있는 사람?

@Override 
    public void onSubmit(AjaxRequestTarget target) { 

    if (input < 10) { //save to database 
} else { 
     AskingDialogPanel panel = new AskingDialogPanel("content", 
     new ResourceModel("asking.title"), 
     new ResourceModel("asking.message")) { 
     @Override 
     public void onOkClick(AjaxRequestTarget target) { 
     super.onOkClick(target); 

                //save to database 
     modalWindow.close(target); 
     } 

     @Override 
     public void onCancelClick(AjaxRequestTarget target) { 

     super.onCancelClick(target); 
     modalWindow.close(target); 
     } 
    }; 
            panel.setOutputMarkupId(true); 
       target.addComponent(panel); 
       modalWindow.setContent(panel); 
       modalWindow.show(target); 
} 
+0

더 많은 코드가 도움이 될 것입니다. 거기에 코드가 필요하지 않아야합니다 (Tim의 답변에 대한 내 의견을 참조하십시오). 그러나 표시된 부분에서 모달 창을 표시하지 못하는 것은 보이지 않습니다. 디버거를 사용했거나 로그 또는 테스트를 디버깅하여 여기에 else 절이 실제로 도달했는지 확인 했습니까? –

답변

0

AjaxRequestTarget에 대한 설명서를 살펴보십시오.

그 마크 업 될 필요 업데이트 AjaxRequestTarget # addComponent (성분) 방법을 통해이 목표 에 추가되어야 할 요소.대상이 처리 될 때 몸체가 렌더링되고 이 봉투에 추가되고 AYax 응답이 인 경우 클라이언트 측에서 새로 고쳐집니다.

나는 (I 문제 이전에 올바른 새로 고침 동작을 구현 했어)을 제대로 기억한다면 모르겠지만, 난 당신이 이전에 페이지에 추가,하지만하지 않은 경우에만 addComponent 구성 요소가 렌더링 수 있으리라 생각합니다/보이지 않는. 이것들은 업데이트되거나 가시성이 재평가 될 것입니다.

그러나 나는 틀릴 수있다. AskingDialogPanel에 대한 일반 레이블을 대체하면 위의 작업이 수행됩니까? (단지 내가 잘못된 말을하고 있는지 확인하기 위해)

+2

ModalWindow 코드 내에서 처리되므로 target.addComponent (panel) 또는 panel.setOutputMarkupId (true)는 실제로 필요하지 않습니다. –