문제

이 작업을 수행 할 수 있다면 Wicket의 JavaScript 코드 내에서 Java Code (예 : 메소드)를 어떻게 호출합니까?

도움이 되었습니까?

해결책

에크. 정답은 Ajax 콜백입니다. JS를 수동으로 코딩하여 개찰구 JS에 연결하거나 Java의 개찰구 구성 요소에서 콜백을 설정할 수 있습니다. 예를 들어 Ajaxlazyloadpanel에서 :

        component.add( new AbstractDefaultAjaxBehavior() {

        @Override
        protected void respond(AjaxRequestTarget target) {
            // your code here
        }

        @Override
        public void renderHead(IHeaderResponse response) {
            super.renderHead( response );
            response.renderOnDomReadyJavascript( getCallbackScript().toString() );
        }

        }

이 예제는 개찰구의 모든 구성 요소에 호출 코드를 추가하는 방법을 보여줍니다. 브라우저에서 OnDomready 이벤트가 발생하면 페이지를로드 할 때 개찰구는 JS Enging을 유발하고 AJAX를 사용하여 코드로 다시 호출하여 위에 표시된 '응답'방법으로 다시 호출합니다. 서버, 잠재적으로 AJAX 대상에 구성 요소를 추가하여 재 렌더링 할 수 있습니다.

JS에서 수동으로 수행하려면 getCallbackScript (). toString ()를 개찰구 구성 요소의 속성으로 인쇄하여 개찰구 시스템에 연결할 수 있습니다. 그러면 JS에서 액세스 할 수 있습니다. Wicket-ajax.js의 개찰구의 개찰구를 사용하여 JS 에서이 URL을 수동으로 호출합니다.

이 주제에 대한 많은 대화는 메일 링리스트를 확인하십시오.http://www.nabble.com/wicket-and-javascript-ts24336438.html#a24336438

다른 팁

발췌 https://cwiki.apache.org/wicket/calling-wicket-from-javaScript.html

AbstractDefaultAjaxBehavior를 페이지로 확장하는 클래스를 추가하면 Wicket-Ajax.js가 웹 페이지의 헤더에 추가됩니다. 개찰구-ajax.js는 구성 요소를 호출하는 두 가지 기본 방법을 제공합니다.

function wicketAjaxGet(url, successHandler, failureHandler, precondition, channel)

그리고

function wicketAjaxPost(url, body, successHandler, failureHandler, precondition, channel)

예는 다음과 같습니다.

자바 스크립트

function callWicket() {
   var wcall = wicketAjaxGet('$url$' + '$args$', function() { }, function() { });
}

$url$ 방법에서 얻습니다 abstractDefaultAjaxBehavior.getCallbackUrl(). 해당 메소드에서 반환 된 문자열을 브라우저에 붙여 넣으면 응답 메소드를 호출하면 JavaScript 메소드에도 동일하게 적용됩니다.

URL 문자열에이를 추가하여 인수를 선택적으로 추가 할 수 있습니다. 그들은 형태를 취합니다 &foo=bar.

Java 응답 방법에서 다음과 같은 선택적인 인수를 얻습니다.

Map map = ((WebRequestCycle) RequestCycle.get()).getRequest().getParameterMap();

아니면 이거:

String paramFoo = RequestCycle.get().getRequest().getParameter("foo");

http://www.wicket-library.com/wicket-examples-6.0.x/index.html/ 당신을 갈 수있는 많은 사례가 있습니다.

또는 DWR을 살펴보십시오

http://directwebremoting.org/

DWR을 사용하면 브라우저의 JavaScript가 서버에서 Java와 상호 작용할 수 있으며 결과로 웹 페이지를 조작 할 수 있습니다.

Dorward가 언급했듯이 이것은 Ajax를 통해 이루어집니다

클라이언트에서 실행되는 JavaScript를 의미한다고 가정하면 HTTP를 서버로 리디렉션하여 서블릿이 주어진 URL에 대한 요청에 반응하도록합니다.

이것은 다음과 같습니다 Ajax, 그리고, 그리고 a 숫자도서관 그렇게하는 데 도움이됩니다 ..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top