Java Ajax调用未命中控制器

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/> <

您好,我正在尝试在liferay中将Ajax与Spring Mvc Porltet结合使用。我有一个Jsp文件和控制器类。我想在表单中插入一个数据,但我的控制器类没有被调用。因此,请帮助我解决此问题。当我单击“提交”时,我的控制器类没有被调用

my.jsp代码如下所示:

<%@ 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>&nbsp;REQUEST</h2>  
    <h3>&nbsp;Enter Request Details :</h3>
    <p>Name: <input name="name"> &nbsp;&nbsp;&nbsp;&nbsp;
    Code: <input name="code" size="6">&nbsp;&nbsp;&nbsp;
    Request: <input name="request"> &nbsp;&nbsp;&nbsp;
    Type: <input name="type" size="6"></p>    
          <hr></hr>   

    <div class="block2">        
        <h2>&nbsp;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>&nbsp;</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>
            &nbsp;&nbsp;<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}
    没有在其中定义。因此您可以这样做:
在HTML(您在顶部发布的.jsp文件)中:

用这个做实验,我没有办法测试它可能需要一些调整,比如在哪里添加
脚本(靠近文档开头,靠近结尾),以及是否需要
${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插件,并且可以使用js
alert
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);
            }
        });