Java Ajax调用未命中控制器
您好,我正在尝试在liferay中将Ajax与Spring Mvc Porltet结合使用。我有一个Jsp文件和控制器类。我想在表单中插入一个数据,但我的控制器类没有被调用。因此,请帮助我解决此问题。当我单击“提交”时,我的控制器类没有被调用 my.jsp代码如下所示:Java Ajax调用未命中控制器,java,javascript,ajax,spring-mvc,liferay-6,Java,Javascript,Ajax,Spring Mvc,Liferay 6,您好,我正在尝试在liferay中将Ajax与Spring Mvc Porltet结合使用。我有一个Jsp文件和控制器类。我想在表单中插入一个数据,但我的控制器类没有被调用。因此,请帮助我解决此问题。当我单击“提交”时,我的控制器类没有被调用 my.jsp代码如下所示: <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> <portlet:defineObjects/> <
<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<portlet:defineObjects/>
<portlet:renderURL var="renderOneMethodURL">
<portlet:param name="action" value="renderOne"></portlet:param>
</portlet:renderURL>
<portlet:actionURL var="actionOneMethodURL">
<portlet:param name="action" value="actionOne"></portlet:param>
</portlet:actionURL>
<a href="${renderOneMethodURL}">Call RenderOne method</a>
<%-- <form action="${actionOneMethodURL}" method="post">
User Name: <input type="text" name="userName">
<input type="submit">
</form> --%>
<div id="request">
<div id="bigForm">
<h2> REQUEST</h2>
<h3> Enter Request Details :</h3>
<p>Name: <input name="name">
Code: <input name="code" size="6">
Request: <input name="request">
Type: <input name="type" size="6"></p>
<hr></hr>
<div class="block2">
<h2> Attribute Value Pair(Avp)</h2>
<p class="remark"> Recursive structure of avp. You can nest one AVP inside another..</p>
<div data-holder-for="branch"></div>
</div>
<div class="clear"></div>
<p> </p>
<p class="remark" align="right" padding-right:"1cm";>Click here to generate JSON representation of the form</p>
<p align="right">
<input type="submit" id="saveBigForm"></p>
</div>
<style type="text/css">a {text-decoration: none}</style>
<!-- Subforms library -->
<div style="display:none">
<div data-name="branch">
<table>
<td>Name:</td> <td><input name="name"></td>
<td>Code:</td> <td><input name="code"></td>
<td>Vendor:</td> <td><input name="vendor"></td>
<td>Multiplicity:</td><td><input name="multiplicity"></td>
<td>Index:</td><td><input name="index"></td>
<td>CDR-Index:</td><td><input name="cdrIndex"></td>
<tr>
<td >Type:</td><td><input name="type"></td>
<td>Value:</td><td><input name="value"></td>
</tr>
</table>
<div style="margin:10px; border-left:3px solid black" data-holder-for="branch"></div>
</div>
</div>
<div id="popup"></div>
</div>
我得到的日志如下:
09:36:56,291 INFO [DispatcherPortlet:119] Portlet 'firstspringmvc' configured successfully
09:36:56,300 INFO [localhost-startStop-19][PortletHotDeployListener:454] 1 portlet for first-spring-mvc-portlet is available for use
10:09:49,460 WARN [http-bio-9090-exec-138][404_jsp:121] {msg="/$%7BactionOneMethodURL%7D", uri=/$%7BactionOneMethodURL%7D}
10:09:54,325 WARN [http-bio-9090-exec-139][404_jsp:121] {msg="/$%7BactionOneMethodURL%7D", uri=/$%7BactionOneMethodURL%7D}
在JSP中包含JSTL核心,即:
并更改您的ajax URL
url:“${actionOneMethodURL}”
到
url:,
尝试使用jsp核心标记
url : "<c:url value='/VIEW/actionOne' />"
url:“
或
url:“
根据您目前告诉我们的信息,我可以确定这些原因:
- 您的javascript有问题,根本没有运行(使用google chrome或firefox打开并按F12。转到控制台选项卡,告诉我们您是否有任何错误
- 由于您有一个不同的javascript文件,正如警告所说,
没有在其中定义。因此您可以这样做:${actionOneMethodURL}
脚本(靠近文档开头,靠近结尾),以及是否需要${actionOneMethodURL}
周围的。in.jsp页面添加
var actionurl =${actionOneMethodURL};
在example.js的ajax调用中
$.ajax({
type: "POST",
url : actionurl,
data: JSON.stringify(json),
dataType: "json",
success: function(response){
// we have the response
if(response.status == "SUCCESS"){
$('#info').html("Success........!Request has been added......... ");
}else{
$('#info').html("Sorry, there is some thing wrong with the data provided.");
}
},
error: function(e){
alert('Error: ' + e);
}
});
如何在Controller
中尝试@RequestMapping(“/VIEW”)
?First Spring Mvc暂时不可用。并引发异常您确定${actionOneMethodURL}的警报或控制台.log
在js函数中显示正确的url值?在没有Ajax的情况下点击控制器也可以正常工作。您发布的javascript代码是内联添加的?警告是它找不到${actionOneMethodURL}。然后只需在url中提供视图,然后尝试调试JSTL核心库未包含在应用程序中,即。-现在我也收到07:45:39607警告[http-bio-9090-exec-35][404_jsp:121]{msg=“/%3Cc:url%20value=%27/VIEW/actionOne%27%20/%3E”,uri=/%3Cc:url%20value=%27/VIEW/actionOne%27%20/%3E}–嗨,兄弟!!现在我可以点击controller类方法了,但我无法读取我发布的json请帮助我?????@SUBZ你需要使用objectMapper来读取json字符串,只需参考这个,他没有使用JSP核心标记,这就是为什么我不会使用他们的URL@Harshal Patil-没有核心标记,我可以点击${actionOneMethodURL}从但是从我的ajax调用中,它不会击中控制器--@SUBZ您确定导入了jqDynaForm
jquery插件,并且可以使用jsalert
或console.log()调试var json=$('#bigForm').jqDynaForm('get');
的返回值吗
?@suninsky-ya导入后工作正常,但在ajax中只有失败,所以您可以看到console.log(${actionOneMethodURL}”);
和console.log(${actionOneMethodURL})的不同之处
在js函数中。它也没有命中,那个url命中了一些其他的。bro在控制台中我得到了saveBigForm POST这意味着,${actionOneMethodURL}
没有转换为实际的url,而是以纯文本的形式放入。用它进行实验,这样你就可以在那里得到实际的url,而不是${actionOneMethodURL}
作为string.hi bro!!现在我可以点击控制器类方法,但我无法阅读json我发布的内容,请帮助我????????
url : "<c:out value='${actionOneMethodURL}' />"
<script type="text/javascript">
ajaxLink = "${actionOneMethodURL}";
</script>
url : window.ajaxLink;
var actionurl =${actionOneMethodURL};
$.ajax({
type: "POST",
url : actionurl,
data: JSON.stringify(json),
dataType: "json",
success: function(response){
// we have the response
if(response.status == "SUCCESS"){
$('#info').html("Success........!Request has been added......... ");
}else{
$('#info').html("Sorry, there is some thing wrong with the data provided.");
}
},
error: function(e){
alert('Error: ' + e);
}
});