Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法=RequestMethod.POST和model.addAttribute_Java_Spring_Jsp_Maven_Model View Controller - Fatal编程技术网

Java 方法=RequestMethod.POST和model.addAttribute

Java 方法=RequestMethod.POST和model.addAttribute,java,spring,jsp,maven,model-view-controller,Java,Spring,Jsp,Maven,Model View Controller,我对java世界比较陌生。 我正在使用SpringMVC(使用4.0.2)Maven 1) 我有一个jsp文件,它将json数据[A]发送到控制器(POST) 2) 然后,控制器(方法)根据来自jsp的数据计算另一个值 3) 我需要通过model.addAttribute将另一个值(计算结果)[B]返回给jsp 但它不会按模型返回。这是我的密码 在JSP文件中(原始试用版) 我简化了代码,因为响应、解析部分工作正常 我认为(我的怀疑部分)有问题: =>'method=RequestMethod.

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

1) 我有一个jsp文件,它将json数据[A]发送到控制器(POST)

2) 然后,控制器(方法)根据来自jsp的数据计算另一个值

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

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

在JSP文件中(原始试用版) 我简化了代码,因为响应、解析部分工作正常

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

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

=>在jsp中返回“mypage”和[B1]部分

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

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

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

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

[解决方案]

在控制器中(最终解决方案) 在JSP文件中(最终解决方案) 因此,最后,刷新距离值的位置

<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>
距离:${Distance}


效果很好

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

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

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

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

<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>

谢谢你的回答,我已经尝试了你的建议(在问题的编辑部分检查这里):添加了成功内部响应(jsp端)重定向了页面(控制器端)。。但是没有运气。它不会刷新页面。。。还有其他的吗?您提到了一个标准请求而不是Ajax调用。。。什么是标准请求?我怎样才能在代码中做到这一点?谢谢你的回答。我不知道我不能刷新已经加载的jsp页面上的值。我已经尝试了你的答案,并输入了你的建议代码(请勾选原问题编辑部分中的“此处”部分)。但是我没有成功的运气。它不会刷新距离值。。还有其他建议吗?你能检查一下[为什么]部分吗?谢谢
 $.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
success: function(response){   
                $('#distance_result').text(response);
<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>
success: function(json) {
//alert('succeed!');
} ),
<p style="color:red; font-size: 12pt">Distance: <span id="distance_result">${distance}</span></p>
success: function(json){
    $('#distance_result').text(json.responseText);
}