【发布时间】:2014-09-20 19:16:32
【问题描述】:
我有一个带有文本框、下拉列表和提交按钮的 JSP 页面。在第一个下拉列表更改时,属于第二个下拉列表的项目应在下拉列表中动态填充。使用 ajax 调用我正在调用 spring 控制器,我已经编写了逻辑来填充第二个下拉列表中的项目列表。要求是我需要在spring控制器中处理异常,如果发生任何异常,将整个页面重定向到其他jsp页面的错误页面。
获取动态记录以在第一个下拉列表更改时填充第二个下拉列表记录的javascript函数。
function showSID(Id)
{
var xmlHttp;
if (window.XMLHttpRequest)
{
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
var url = contextPath+"/getAllSID.htm?Id="+Id;
xmlHttp.onreadystatechange = function() {
handleServerResponse(xmlHttp);
};
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
function handleServerResponse(xmlHttp)
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
if (xmlHttp.responseText != "null")
{
//handled the response..
}
}
}
}
弹簧控制器在第一个下拉列表更改时填充第二个下拉列表中的记录:
@RequestMapping(value = "/getAllSID", method = RequestMethod.GET)
public void getAllSIDs(HttpServletRequest request,
HttpServletResponse response,
@ModelAttribute SIDDTO dto, BindingResult beException,
@RequestParam("SelectedList") String selList)
throws IOException {
try {
SIDDTO dynamicData = myService.getSIDDynamicData();//Database call
//logic..
response.setContentType("text");
response.resetBuffer();
response.getWriter().print(SID);
}
catch (Exception e)
{
LOGGER.error("Exception occured", e);
}
}
在上述控制器中,myService.getSIDDynamicData() 从数据库中检索数据,有时数据库可能已关闭或由于任何其他原因我可能会遇到一些异常。因此,当出现一些异常时,我必须重定向到 myErrorPage.jsp。 我试过使用 response.sendRedirect("/myErrorPage.jsp");但无法重定向到错误页面,可能是因为我的页面已经加载,并且只有当我更改下拉控件点击上面的控制器并且页面已经加载时,它才能重定向到错误页面。请建议如何处理这种情况下的异常,并在发生错误时重定向到 JSP 页面(错误页面)。谢谢。
【问题讨论】:
标签: ajax jsp spring-mvc