首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法= RequestMethod.POST和model.addAttribute

方法= RequestMethod.POST和model.addAttribute
EN

Stack Overflow用户
提问于 2015-04-27 19:44:30
回答 2查看 1.5K关注 0票数 2

我对java世界比较陌生。我正在使用Spring (使用4.0.2) Maven.

1)我有jsp文件,它将json数据A发送给控制器(POST)。

2)然后,Controller(方法)根据jsp的数据计算另一个值。

3)我需要通过model.addAtrribute将另一个值(计算结果)B返回给jsp。

但它不会按模型返回。这是我的密码。

在JSP文件中(原始试用版)

代码语言:javascript
复制
 $.ajax({
                url:'/mypage.html',
                    data: 'left=' + left +'&right='+ right,  ----[A1]
                    type:"POST",
                    success: function(json){
                    //alert('succeed!');
                    }   
                  });
    .........
    .........
<p style="color:red; font-size: 12pt">Distance: ${distance}</p>  --- [B1]

所以现在控制器:

控权人(原审判)

代码语言:javascript
复制
@RequestMapping(value="/mypage", method = RequestMethod.POST)
public @ResponseBody String update(@RequestBody String  response, Model model) {

    String left = … response parsing…...;   ---[A2] //works fine  
    String right = … response parsing...; -----[A2] //works fine

    String distance = getDistance(left, right);   // [B2] is calculated for distance based on [A2], works fine

    model.addAttribute("distance", distance);   --- [B2]

    Return "mypage";  // [B2] should be delivered to [B1] (in jsp) and display ${distance} value
}

我简化了代码,因为响应、解析部分运行良好。

我认为(我怀疑的部分)有问题

===> 'method=RequestMethod.post‘和'model.addAttribute’

===>返回"mypage“和jsp中的B1部件

如果有人能指出我做错了什么,真的很感激。

======================解决了!=====================

我在这里加入我的解决方案,以防万一,如果有人也需要使用这种技术.

感谢“willysama”和“misko321”提供了好的答案&指出了什么可以和不能,并提供了示例代码。

解决方案

在控制器中(最终解决方案)

代码语言:javascript
复制
    @RequestMapping(value="/mypage", method = RequestMethod.POST)
    public @ResponseBody String update(@RequestBody String  response) {
        String left = … response parsing…...;      
        String right = … response parsing...;  
        String distance = getDistance(left, right);   //e.g. distance = 100

        return distance;    // simply return String value of distance
                            // don't need to have model.addAttribute
    }

在JSP文件中(最终解决方案)

代码语言:javascript
复制
 $.ajax({
            url:'/mypage.html',
            data: 'left=' + left +'&right='+ right, 
            type:"POST",
            success: function(response){   // here should be 'response'
             //here gets from controller
            alert('what I get?response='+response);  //what I get? response=100
            $('#distance_result').text(response);  // to [1] for refreshing distance value 

            }   
        });
    ......
    ......
    <p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>   // [1] refresh the distance value which returned from controller

(解决方案的简单注释)我不需要通过model.addAttribute传递距离值。

当我发布时控制器中的update方法有字符串返回值(public @ResponseBody String update.),所以我只需要将字符串(这里的“距离”)返回给jsp。

然后在jsp中,'ajax:‘部件将得到与成功控制器’距离‘的返回,这是两种方法都指出的。如下所示:

代码语言:javascript
复制
success: function(response){   
                $('#distance_result').text(response);

最后,刷新距离值的地方..。

代码语言:javascript
复制
<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>

效果很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-27 20:24:15

你不能那样做。您正在尝试动态更改已从服务器加载的jsp中的值。这样做的唯一方法是在您的javascript中返回ajax调用。

在要异步设置值的地方放置特定的标记或类:

代码语言:javascript
复制
<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>

并更新您的成功函数以使用来自服务器的响应,并在需要时设置它:

代码语言:javascript
复制
success: function(json){
    $('#distance_result').text(json.responseText);
}
票数 1
EN

Stack Overflow用户

发布于 2015-04-27 20:23:13

在您的代码中,您可以进行Ajax调用,而不是标准请求。因此,页面mypage返回到Ajax成功函数:

代码语言:javascript
复制
success: function(json) {
//alert('succeed!');
} ),

作为已呈现的html,但页面不会刷新。我认为您应该只返回一个JSON,甚至一个简单的字符串,然后在success函数中解析它。然后你可以用新的值来代替旧的值。或者,您可以在Ajax成功后重定向到同一个页面,以刷新页面,或者不进行Ajax调用,而是进行标准的POST请求。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29904577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档