这是一个非常简单的场景,但是我卡住了…
我弹出一个jQuery UI对话框,用户输入一些数据。我正在服务器上处理该数据,用它设置一些会话数据属性,然后返回一个String值,该值与我的一个JSP文件的名称相匹配。
Spring正在检测字符串,通过视图解析器找到JSP,并传回JSP的内容…但是没有加载
这是视图解析器,但我不认为这是问题…
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
</bean>
…这里是控制器重定向:
@RequestMapping(value = "/selectSystem", method = RequestMethod.GET)
public String selectSystem(
@RequestParam("systemid") Integer systemid,
HttpSession session) {
session.setAttribute("currentSystem", systemid);
return "system_main";
}
我一直在Chrome的调试工具中观察这个问题。对话框发送正确的参数,在$之后关闭。post完成后,服务器返回我期望的带有jqGrid的JSP。然而,页面仍然在我开始的地方。
对话框的AJAX将参数发送给服务器,并关闭:
buttons: {
Select: function () {
$.post('selectSystem.html',"systemid="+jQuery('#systemsReviewGrid').jqGrid('getGridParam', 'selrow'));
dialog.remove();
}
},
我测试没有关闭我的对话框,以防内容在我关闭它之前就出现了,但是没有改变。浏览器显示响应数据....中的内容那么为什么不是渲染呢?更令人抓狂的是,我在同一个控制器的另一个区域重定向到这个完全相同的JSP,它工作得很好。我能发现的唯一区别是,在这种情况下,客户端不是来自一个对话框…
还有其他值得关注的地方吗?在这里添加其他片段的建议?
问题是没有对响应做任何事情。在我的无知中,我认为浏览器会解释完整的DOM响应并呈现页面。它需要像href或表单提交一样的页面移位,以使新页面正确呈现。
我最终选择对URL中的参数使用window.location.href调用,然后由Spring控制器在处理参数后返回JSP。像冠军一样工作。
谢谢你的评论