Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >Ajax调用不命中控制器

Ajax调用不命中控制器
EN

Stack Overflow用户
提问于 2014-05-14 02:11:49
回答 4查看 1.9K关注 0票数 0

嗨,我正在尝试使用Ajax与Spring在一起,我有一个Jsp文件和控制器类,我想在表单中插入一个数据,但是我的控制器类不是Called.So,请帮助我解决这个Problem.When,我点击提交,我的Controller类没有调用。

我的.jsp代码如下:

代码语言:javascript
代码运行次数:0
复制
<%@ 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>

我的javascript

代码语言:javascript
代码运行次数:0
复制
$('#saveBigForm').click(function(){    
        var json = $('#bigForm').jqDynaForm('get');    
        showFormJson(json);  
       // var myInfoUrl = "<c:out value="${actionOneMethodURL}" />";
        $.ajax({

            type: "POST",
             //url: "http://localhost:9090/first-spring-mvc-portlet//WEB-INF/servlet/view",
            //url : myInfoUrl,
            url : "${actionOneMethodURL}",
            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);
            }
        });
    });

和控制器类如下所示

代码语言:javascript
代码运行次数:0
复制
package com.myowncompany.test.springmvc.controller;

import java.io.IOException;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.portlet.bind.annotation.ActionMapping;
import org.springframework.web.portlet.bind.annotation.RenderMapping;

import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.util.ParamUtil;

@Controller(value = "MyFirstSpringMVCTestController")
@RequestMapping("VIEW")
public class MyFirstSpringMVCTestController {

    private static Log log = LogFactoryUtil.getLog(MyFirstSpringMVCTestController.class);
    /*
     * maps the incoming portlet request to this method
     * Since no request parameters are specified, therefore the default
     * render method will always be this method
     */
    @RenderMapping
    public String handleRenderRequest(RenderRequest request,RenderResponse response,Model model){

        return "defaultRender";
    }

    @RenderMapping(params = "action=renderOne")
    public String openSaveSearchPopup(RenderRequest request, RenderResponse response, Model model){
        return "render1";
    }

    @RenderMapping(params = "action=renderTwo") 
    public String openDeeplinkForInfoI(RenderRequest request, RenderResponse response){
        return "render2";
    }

    @RenderMapping(params = "action=renderAfterAction") 
    public String testRenderMethod(RenderRequest request, RenderResponse response){
        log.info("In renderAfterAction method");
        return "renderAfterAction";
    }

    @ActionMapping(params = "action=actionOne") 
    public void actionOne(ActionRequest request, ActionResponse response) throws IOException {
        String userName=ParamUtil.get(request, "userName", "");
        log.info("server input stream is :::"+ request.getPortletInputStream().toString());
        System.out.println("we ri nnnnnnnnn");
        log.info("userName is==>"+userName);
        response.setRenderParameter("action", "renderAfterAction");
    }

    @ActionMapping(params = "action=actionTwo")
    public String addMyChannelAction(ActionRequest actionRequest, ActionResponse actionResponse) {
        return "action2";
    }

}

我得到的日志如下:

代码语言:javascript
代码运行次数:0
复制
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}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-25 01:52:50

在.jsp页面中添加

代码语言:javascript
代码运行次数:0
复制
var actionurl =${actionOneMethodURL};

在ajax调用的example.js中

代码语言:javascript
代码运行次数:0
复制
$.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);
            }
        });
票数 -1
EN

Stack Overflow用户

发布于 2014-05-14 02:48:57

在JSP中包括JSTL核心,即:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

并更改ajax

url : "${actionOneMethodURL}"

url : "<c:url value='/VIEW/actionOne' />",

票数 0
EN

Stack Overflow用户

发布于 2014-05-14 03:57:05

尝试使用jsp核心标记,

代码语言:javascript
代码运行次数:0
复制
url : "<c:url value='/VIEW/actionOne' />"

代码语言:javascript
代码运行次数:0
复制
url : "<c:out value='${actionOneMethodURL}' />"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23651688

复制
相关文章
如何存储用户的密码才能算安全?
前段时间将一个集成了 spring-security-oauth2 的旧项目改造了一番,将 springboot 升级成了 springboot 2.0,众所周知 springboot 2.0 依赖的是 spring5,并且许多相关的依赖都发生了较大的改动,与本文相关的改动罗列如下,有兴趣的同学可以参考:Spring Security 5.0 New Features 。其中一个比较有意思的改动---- Spring Security 5.0 重构了密码编码器的实现(Password Encoding,由于大多数 PasswordEncoder 相关的算法是 hash 算法,所以本文将 PasswordEncoder 翻译成‘密码编码器’和并非‘密码加密器’),引起了我兴趣官方称之为
kirito-moe
2018/07/25
1.4K0
如何存储用户的密码才能算安全?
针对每个用户的作业(针对用户的定期事件)
-----------------------------------------------------------------------------------------------------------------------------
liulun
2022/05/09
3000
C语言 | 统计选票结果的程序
例38:有三个候选人,每个选民只能投给一个人,要求用C语言编一个统计选票的程序,先后输入备选人的的名字,最后输出各人的得票结果。
小林C语言
2020/12/18
2K0
C语言 | 统计选票结果的程序
为每个用户设置合适的屏幕亮度
移动设备的屏幕对于用户体验至关重要。Android 9 Pie 中改进的 “自动调节亮度” 特性会自动将屏幕调整到您偏好的亮度级别,使您在任何光线条件下都能获得最佳体验。
Android 开发者
2018/12/19
1.6K0
如何安全传输与存储用户密码?
我们开发网站或者APP的时候,首先要解决的问题,就是「如何安全传输和存储用户的密码」。一些大公司的用户数据库泄露事件也时有发生,带来非常大的负面影响。因此,如何安全传输存储用户密码,是每位程序员必备的基础。本文将跟大家一起学习,如何安全传输存储用户的密码。
macrozheng
2021/01/08
1.3K0
如何安全传输与存储用户密码?
如何查看每个城市的生意如何?
”销售订单表”记录了销售情况,每一张数据表示哪位顾客、在哪一天、哪个网点购买了什么产品,购买的数量是多少,以及对应产品的零售价
猴子数据分析
2022/02/12
1.3K0
如何查看每个城市的生意如何?
闲聊用户画像的存储
现在的用户画像,动不动就是几千几万个标签,标签一多就出现了一些需要克服的难题,比如下面两个:
木东居士
2019/02/28
3.6K0
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
芋道源码
2021/01/25
1.4K0
Redis 如何存储上亿级别的用户状态?
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
肉眼品世界
2021/01/25
7010
Redis 如何存储上亿级别的用户状态?
mysql查询每个用户的第一条记录_mysql怎么创建用户
方法1:查询出结果后将时间排序后取第一条(只能取到一条,并且不能查询不同客户的记录)
全栈程序员站长
2022/10/04
6.9K0
mysql查询每个用户的第一条记录_mysql怎么创建用户
Redis 如何存储上亿级别的用户状态?
如何用redis存储统计1亿用户一年的登陆情况,并快速检索任意时间窗口内的活跃用户数量。
二哥聊运营工具
2021/12/17
6690
Redis 如何存储上亿级别的用户状态?
用户密码传输和存储的保护
软件设计的过程中,用户的密码信息最为敏感,在进行用户登录验证时,除了将密码在传输的过程中,进行md5加密,避免密码明文传输过程中被截获外,还有一个就是密码在数据库中的存储安全问题。 常用的方案是对密码
码农阿宇
2018/04/18
1.1K0
用户密码传输和存储的保护
hive sql(六)—— 每个用户连续登录最大天数
分析中第3点在hive sql系列(三)中计算连续日活中也用到了日期差值,参考链接:
大数据最后一公里
2021/08/05
3K0
每个用户都应该知道的Ubuntu键盘快捷键
无论使用什么操作系统,键盘快捷键都可以帮助你快速上手,可以在启动应用程序或导航到所需窗口时节省时间和精力。
用户6543014
2020/03/11
2.5K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
Blobstore是位于SPDK bdev之上的Blob管理层,用于与用户态文件系统Blobstore Filesystem (BlobFS)集成,从而代替传统的文件系统,支持更上层的服务,如数据库MySQL、K-V存储引擎Rocksdb以及分布式存储系统Ceph、Cassandra等。以Rocksdb为例,通过BlobFS作为Rocksdb的存储后端的优势在于,I/O经由BlobFS与Blobstore下发到bdev,随后由SPDK用户态driver写入磁盘。整个I/O流从发起到落盘均在用户态操作,完全bypass内核。此外,可以充分利用SPDK所提供的异步、无锁化、Zero Copy、轮询等机制,大幅度减少额外的系统开销。它们之间的关系如下所示(以NVMe bdev为例):
Linux阅码场
2019/06/05
4.9K0
打造用户态存储利器,基于SPDK的存储引擎Blobstore & BlobFS
如何给每个RM添加约束?
在DFX设计中,我们也会碰到类似的情形,即给同一个RP(Reconfigurable Partition)下的不同RM(Reconfigurable Module)添加不同的约束。这时要考虑几个因素:同一个RP下不管有几个RM,在设计中均对应同一个实例化的名字。这意味着不能仅仅通过SCOPE_TO_CELLS将这些约束对应到不同的RM上。另外,每个RM只有在自身对应的configuration上才有效,所以要保证在这个configuration上对应的RM的约束也要有效。从下图可以看到,当前这个DFX设计中有一个RP,名字为图中红色方框所示,该RP下有两个RM,分别为rp1rm1和rp1rm2。
Lauren的FPGA
2023/08/18
2110
如何给每个RM添加约束?
MySQL存储过程,视图,用户管理
一张虚拟表,就是将一个经常被使用的查询作为一个虚拟表,开发者查询的时候不需要再次书写SQL,而是直接调用对应的视图就可,调用视图以后MySQL会执行这个查询SQL。
石的三次方
2021/01/05
9330
Spring Security 简单配置用户存储
@EnableWebSecurity注解将会启动Web安全功能,但它本身并没有什么功能。Spring Security必须配置在一个实现了WebSecurityConfigurer的bean中,或者扩展WebSecurityConfigurerAdapter,扩展该类是最简单的配置方法。
Tim在路上
2020/08/04
7800
保存用户信息到本地存储
简介:在页面加载时从本地存储中恢复数据,并将已保存的数据显示在对应的输入框中。一起来看看:
Dabenshi
2023/08/27
2660
点击加载更多

相似问题

查询Django中每个用户的最新选票

12

Android固定设置限制为每个用户1张选票

20

用于捕获选票和聚合选票的数据存储

13

确保数据库中每个用户、每个页面都有一张选票

31

Rails:允许用户销毁选票

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文