개찰구의 JavaScript 코드에서 Java 코드를 어떻게 호출합니까?
-
03-07-2019 - |
문제
이 작업을 수행 할 수 있다면 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을 살펴보십시오
DWR을 사용하면 브라우저의 JavaScript가 서버에서 Java와 상호 작용할 수 있으며 결과로 웹 페이지를 조작 할 수 있습니다.
Dorward가 언급했듯이 이것은 Ajax를 통해 이루어집니다