在onclick事件期间从速度模板调用java函数

时间:2016-06-02 03:52:14

标签: javascript struts2 velocity

Web应用程序使用struts2和velocity

1)

速度文件有一个链接,当点击链接时,我希望调用java函数。

productform.vm

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

当点击来自velocity文件的链接时,我需要调用java函数

abc.java

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

请告知如何执行此操作

2)

我可以在点击来自速度的链接时调用javascript函数,但是从javascript函数如何调用java函数(例如abc.printabc())

请告知。

1 个答案:

答案 0 :(得分:0)

你可以看一下DWR,它提供了java作为javascript函数的方法。直接取自Tutorial

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集成到struts中,他们还提供了相关教程:DWR Struts Tutorial

另一个解决方案是通过ajax请求调用该java方法:

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

这是一个jQuery示例,因此请确保您的html代码的<head>中包含该库。在html代码中调用此方法,然后通过ajax“调用”java方法。

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