从JSP中的JavaScript/jQuery调用后端Java方法
Calling a backend Java method from JavaScript/jQuery in JSP
我有一个JSP,其中有一个包含实体种类名称的select
列表。当我选择一个实体种类时,我需要用所选实体种类的字段名填充另一个select
列表。为此,我在onchange
事件上调用了一个JavaScript函数。
在JavaScript方法中,我需要在后台调用一个方法,该方法返回一个arraylist
,其中包含所选实体类型的字段名。
如何在有Ajax和没有Ajax的情况下调用该方法?此外,我如何使用arrayList
动态填充第二个选择列表?
我将描述两种方法:使用/不使用AJAX。
-
如果要执行同步表单提交,则需要将
onchange
事件附加到第一个select
元素:<select name="select-one" id="select-one" onchange="this.form.submit()"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select>
当以这种方式完成时,表单将被提交,第一个选择选项将以
request.getParameter("select-one")
的形式提供,在此基础上,您将为第二个下拉填充提供数据,通常会转发到JSP。 -
如果您想通过AJAX检索列表并重新填充另一个下拉列表,您可以发送AJAX请求并在回调函数中处理返回的数据:
var val = $('#select-one option:selected').val(); $.ajax({ url: "servletURL",//servlet URL that gets first option as parameter and returns JSON of to-be-populated options type: "POST",//request type, can be GET cache: false,//do not cache returned data data: {one : val},//data to be sent to the server dataType: "json"//type of data returned }).done(function(data) { var second = $("#select-two"); $.each(data, function() { options.append($("<option />").val(this.value).text(this.label)); }); });
这样做时,第二个下拉列表将在不刷新页面的情况下重新填充。
-
在选择下拉的
onchage
事件上编写一个JavaScript函数名称callAJAX -
在您的callAJAX函数中,对后端进行ajax调用,从服务器获取响应,并用ajax调用中的响应填充新的下拉列表
我希望你可以进行ajax调用,如果不让我知道的话。
您希望从后端动态加载列表。您必须与服务器通信:
- 带有页面加载(表单提交(
- 或者不加载页面(ajax(
如果AJAX
不是你的要求,我建议你先通过表单提交(带页面加载(来完成,因为这对初学者来说更简单。
同意Jai的意见。您必须将该表单提交给java方法,然后您的java方法将返回arrayList。当然,如果你提交表单,你的页面会被刷新,我不确定你以前选择的值是否仍会在表单上被选中。我对这种方法不太熟悉。我更喜欢使用jquery。
使用jquery,你可以这样做:
$.ajax({
url: "/MyApp/MyClass/getArrayList",
type: "GET",
data: "selectedEntity=" + s_entity,
success: function(response){
//handle returned arrayList
},
error: function(e){
//handle error
}
});
把这个放在函数中。将您选择的实体作为参数传递,并在成功部分处理响应。当然,您的java方法应该将"selectedEntity"映射到方法头中的一个参数。春天是这样做的:
private @ResponseBody ArrayList getArrayList(@RequestParam("selectedEntity") String entity)
- 调用后端、多路径变量、Ext Js
- 如何断言后端端点已被调用
- 如何通过内容类型为“image/jpeg”的 AJAX 调用将画布图像从 GUI 保存到后端
- Angular 2:当第一个服务成功时,两个后端服务调用
- 通过AJAX调用将JSON对象发送到Django后端
- 如何处理对后端服务进行相同调用的多个浏览器脚本
- 在 SQL 依赖项更改后调用客户端函数
- 调用后端时,页面会失去对齐方式,并且需要一些时间来重新对齐控件
- 后端允许来自iOS Android和Javascript的api调用
- 在WordPress后端的TinyMCE模态窗口中调用PHP函数
- 从JavaScript调用后端方法和参数传递
- JavaScript方法不是从后端调用的
- Phonegap没有执行ajax脚本(对后端的REST调用)
- 什么's是用JavaScript调用Node.js后端函数的最有效方法
- 通过ajax调用将参数传递到rails后端
- SignalR-Hub在IIS停止后,启动将不再调用客户端函数
- Javascript Ajax前端调用asp.net c#后端
- 会话属性在调用客户端重定向后丢失
- 如何在AngularJS中通过点击下拉元素来调用后端服务
- 从JSP中的JavaScript/jQuery调用后端Java方法