Для вызова функции Java из шаблона скорости во время события onclick

Веб-приложение использует Struts2 и скорость

1)

У файла скорости есть ссылка, и когда ссылка нажата, я хочу вызвать функцию Java.

productform.vm


 <a href="javascript:void(0);" onclick="*************" id="acnt_link"> Add Acnt </a> 

когда нажата ссылка из файла скорости, мне нужно вызвать функцию java

abc.java

public void printabc(){
syso("Java function called when link from velocity temp is clicked");
}

Посоветуйте пожалуйста как это сделать

2)

я могу вызвать функцию javascript, когда нажата ссылка со скоростью, но из функции javascript как я могу вызвать функцию java (например, abc.printabc())

Пожалуйста, порекомендуйте.

1 ответ

Решение

Вы можете взглянуть на DWR, который предоставляет вам методы из java как функцию javascript. Непосредственно взяты из их учебника:

public class Remote {
    public String getData(int index) { ... }
}

И соответствующий фрагмент HTML:

<head>
<!-- other stuff -->
<script type="text/javascript" src="[WEBAPP]/dwr/interface/Remote.js"> </script>
<script type="text/javascript" src="[WEBAPP]/dwr/engine.js"> </script>   
<script>
function myRemoteMethod() {
    Remote.getData(42, {
        callback: function(str) { 
            alert(str); 
    }});
}
</script>
</head>
<body>
<!-- ... -->
    <a href="javascript:void(0);" onclick="myRemoteMethod()">Add Acnt</a>
<!-- ... -->
</body>

Убедитесь, что вы интегрируете DWR в распорки, для этого у них также есть учебники: DWR Struts Tutorial.

Другое решение - вызвать этот java-метод с помощью ajax-запроса:

function myRemoteMethod() {
    $.get('/link/to/method/')
    .done(function (data) {
         alert('Return message of server was:' + data);
    });
}

Это пример jQuery, поэтому убедитесь, что у вас есть библиотека в <head> вашего HTML-кода. Вызовите этот метод в html-коде, и вы "вызовите" java-метод через ajax.

<a href="javascript:void(0);" onclick="myRemoteMethod()">Add Acnt</a>
Другие вопросы по тегам