2014-11-06 4 views
2

처리를 위해 내 Wicket Component Java 코드 (예 : 지속성)에 전달하려는 클라이언트의 자바 스크립트에 일부 데이터가 있습니다.Wicket : 아약스를 통해 데이터 업로드

버튼에 saveButton.addButtonListener(WICKET_ID_SAVEBUTTON, null, this);을 사용하면 아약스를 통해 버튼이 클릭 설정되었음을 알리는 Wicket 컨트롤러 (자바)를 허용합니다.

additionalData 또는 다른 방법을 통해 데이터 (예 : var mydata = ["duck", "duck", "goose"])를 전달할 수 있나요?

@Override 
public void onButtonClick(String clickedButtonId, Object additionalData, AjaxRequestTarget renderTarget) 

고마워요! 추 신 : Wicket-6을 사용 중입니다.

+0

나는 이렇게하는 것이 가능하지 않다고 생각하기 시작했습니다. AJAX 게시물 요청은 https://cwiki.apache.org/confluence/display/WICKET/Calling+Wicket+from+Javascript에 설명되어 있지만 작동하지는 않습니다. – danba

답변

2

AbstractDefaultAjaxBehavior를 사용하여 저장 버튼을 호출 할 수 있습니다.

페이지에 동작을 추가

AbstractDefaultAjaxBehavior bum = new AbstractDefaultAjaxBehavior() 
{ 
    @Override 
    protected void respond(AjaxRequestTarget _target) 
    { 
    String data = RequestCycle.get().getRequest().getRequestParameters().getParameterValue("data").toString(); 
    // parse and save data 
    } 
}; 
myComponent.add(bum); // needed to allow access to getCallbackUrl() 

무시 renderHead를 페이지 설정에서 AjaxBehavior을 자바 스크립트 함수로

@Override 
public void renderHead(IHeaderResponse response) 
{ 
    super.renderHead(response); 
    response.render(JavaScriptHeaderItem.forScript("function myFunction(data) {Wicket.Ajax.get({'u':'"+ bum.getCallbackUrl() +"&data=' + data})}", "myFunction")); 
} 

그런 다음합니다 (이 myFunction이 전화를 마크 업에 버튼을 저장할 수 데이터)를 저장하려는 데이터로 대체하십시오.