Java 无法调用控制器方法,使用SpringMVC调用ajax
我有个问题 使用SpringMVC,我想使用ajax调用,尝试调用controller方法,但我做不到,有一个jsp页面和控制器类 我的Jsp页面Java 无法调用控制器方法,使用SpringMVC调用ajax,java,ajax,spring,spring-mvc,Java,Ajax,Spring,Spring Mvc,我有个问题 使用SpringMVC,我想使用ajax调用,尝试调用controller方法,但我做不到,有一个jsp页面和控制器类 我的Jsp页面 <form role="form" > <div class="form-group"> <label for="Ders">Ders</label> <for
<form role="form" >
<div class="form-group">
<label for="Ders">Ders</label>
<form:select path="derslist" class="form-control" id="ddlders">
<form:options items="${derslerlistesi}" itemValue="dersid"
itemLabel="ders" />
</form:select>
</div>
<div class="form-group">
<label for="KonuAd">Konu Ad</label> <input type="text"
class="form-control" id="KonuAd" placeholder="Konu İsmi Giriniz!">
</div>
<div class="form-group">
<button type="submit" id="btnekle" class="btn btn-default">Ekle</button>
</div>
谢谢你的帮助 我认为您在脚本中有问题,您需要将数据作为查询参数传递,因为您在控制器类中使用了
@RequestParam
。因此,在ajax调用中,url应该如下所示
url: "/islemler/konukaydet?konu="+input.konu+"&dersid="+input.dersid;
注意-您没有在控制器中使用islemler
URL@RequestMapping(value=“/islemler/konukaydet”,method=RequestMethod.POST)
它可能会帮助你,如果没有请回答我
如果您想按原样使用脚本,那么您需要在控制器中进行更改,使用
@RequestBody
并使用模型添加到@Sam的点,根据您在js上的url,您需要在控制器级别添加@RequestMapping。因此,您的控制器应该如下所示:
@RequestMapping(value = "/islemler")
@Controller public class IslemlerController {
因此,通过将控制器级别的请求映射和KonuKaydet方法级别的请求映射结合起来,您现在就可以完成所需的请求映射 我假设您已经在dispatcher servlet.xml中配置了控制器 如果不是 如果您在本地计算机上运行它,那么您需要调用
$.ajax({
//其他选择。
网址:http://localhost:/
//其他选择。
});代码>
此外,@RequestMapping
应在控制器级别提供。在@RequestMapping中,您应在控制器方法上映射完整URL,或在控制器级别添加@RequestMapping,如:
@Controller
@RequestMapping("/islemler/")
public class IslemlerController {
@Autowired
private Dao dao;
@Autowired
private Konular _konu;
@RequestMapping(value = "home", method = RequestMethod.GET)
public String Home(Model model,Dersler dersler) {
model.addAttribute("derslist",dersler);
return "islemler";
}
@ModelAttribute("derslerlistesi")
public List<Dersler> getdersler ()
{
return dao.getAll(Dersler.class);
}
@ModelAttribute("konulistesi")
public List<Konular> getKonular ()
{
return dao.getAll(Konular.class);
}
@ResponseBody
@RequestMapping(value="konukaydet",method=RequestMethod.POST)
private Konular KonuKaydet (@RequestParam String konu,@RequestParam int dersid)
{
_konu.setKonu(konu);
_konu.setDersid(dersid);
_konu.setSinavid(1);
_konu = dao.save(_konu);
System.out.println("kaydet e girdi !");
return _konu;
}
}
对于Home方法,您的URL类似于“./islemler/Home”
我希望它能帮助你。解决这个问题
脚本代码
function madeAjaxCall(){
var data = {}
data["konu"] = $("#konuad").val()
data["dersid"] = $("#ddlders").val()
$.ajax({
type: "post",
// http://localhost:8080
url: "/islemler/konukaydet",
cache: false,
// data:'konu=' + $("#konuad").val() + "&dersid;=" + $("#ddlders").val(),
data:data,
success: function(response){
$('#result').html("");
var obj = JSON.parse(response);
$('#result').html("First Name:- " + obj.konu +"</br>Last Name:- " + obj.dersid );
},
error: function(){
alert('Error while request..');
}
});
}
非常感谢……:) 你能检查一下你在浏览器上调用的响应并检查它返回的响应代码吗?好的,然后通过接受或投票来结束这个问题。事实上,我遇到了一个新问题:ajax调用成功没有触发下面的代码,它工作它调用方法并做一些工作,但不启动成功的ajax调用你有什么想法吗?我解决了这个问题,是的,我没有看到这个教程,我在这个url上使用了脚本代码。当我在我的控制器方法上使用“@RequestMapping(value=“islemler/konukaydet”,method=RequestMethod.POST)”注释时,我的控制器出现了问题。它可以工作,不需要本地主机:,非常感谢ASquarei先生,我认为dispatherservlet找不到我的控制器方法url
@Controller
@RequestMapping("/islemler/")
public class IslemlerController {
@Autowired
private Dao dao;
@Autowired
private Konular _konu;
@RequestMapping(value = "home", method = RequestMethod.GET)
public String Home(Model model,Dersler dersler) {
model.addAttribute("derslist",dersler);
return "islemler";
}
@ModelAttribute("derslerlistesi")
public List<Dersler> getdersler ()
{
return dao.getAll(Dersler.class);
}
@ModelAttribute("konulistesi")
public List<Konular> getKonular ()
{
return dao.getAll(Konular.class);
}
@ResponseBody
@RequestMapping(value="konukaydet",method=RequestMethod.POST)
private Konular KonuKaydet (@RequestParam String konu,@RequestParam int dersid)
{
_konu.setKonu(konu);
_konu.setDersid(dersid);
_konu.setSinavid(1);
_konu = dao.save(_konu);
System.out.println("kaydet e girdi !");
return _konu;
}
}
$(document).ready(function() {
$("#btnekle").click(function() {
var input = {
"konu": $("#KonuAd").val(),
"dersid": $("#ddlders").val()
};
var inputStr = JSON.stringify(input);
alert(inputStr);
$.ajax({
url: "../islemler/konukaydet",
type: "POST",
data: inputStr,
dataType: "json",
success: function(output) { // callback method for further manipulations
var str = JSON.stringify(output);
alert("success ");
$("#output").text(data);
},
error: function(data) { // if error occured
alert("err");
$("#error").text(data);
}
});
});
});
function madeAjaxCall(){
var data = {}
data["konu"] = $("#konuad").val()
data["dersid"] = $("#ddlders").val()
$.ajax({
type: "post",
// http://localhost:8080
url: "/islemler/konukaydet",
cache: false,
// data:'konu=' + $("#konuad").val() + "&dersid;=" + $("#ddlders").val(),
data:data,
success: function(response){
$('#result').html("");
var obj = JSON.parse(response);
$('#result').html("First Name:- " + obj.konu +"</br>Last Name:- " + obj.dersid );
},
error: function(){
alert('Error while request..');
}
});
}
@RequestMapping(value="islemler/konukaydet",method=RequestMethod.POST)
private @ResponseBody Konular KonuKaydet (HttpServletRequest request, HttpServletResponse response)
{
_konu.setKonu(request.getParameter("konu"));
_konu.setDersid(Integer.parseInt(request.getParameter("dersid")));
_konu.setSinavid(1);
_konu = dao.save(_konu);
System.out.println("kaydet e girdi !");
return _konu;
}