Spring MVC控制器
问题描述:
我有一个控制器类,用于搜索学生数据库并显示其 信息。现在无论是否找到特定的学生,它都会显示相同的屏幕。 如果后端搜索不返回任何数据,我打算显示不同的视图。对于这 我编码我的控制器if else块(数据发现:显示视图,否则显示不同的看法),但 它似乎没有工作。无论如何,我看到相同的观点返回。在这个样本 学生/ homePage。我在这里做错了什么?Spring MVC控制器
@Controller
public class StudentController extends BaseClassController
{
@RequestMapping(value = "/student/studentSearch.html", method = RequestMethod.POST)
public String searchStudent(Arguments)
{
if(bundleStudentBean.getRollNum() != null)
{
try
{
//Call Service layer and get the data
//Set into a model
}
catch(ServiceException e)
{
// Some exception occured
}
catch(Exception e)
{
//print error trace
}
//Student Found: Show student homepage
return "student/homePage";
}
//No Student Found: Show splash page
return "student/noDataPage";
}
}
答
而不是检查rollNum是否为空,更好地检查它的值是否为零。即使你对它没有任何价值,函数也可能返回零。大多数情况下,在数据库中你可能会设置列不为空,并且int
答
好的做法:控制器方法应尽可能轻量级。
不良做法:using Exceptions as control flow。
Spring MVC有一个很好的方法将业务异常映射到自定义视图使用ExceptionHandlers。我认为这只是控制器正在寻找学生而没有发现的情况之一 - 使用ExceptionHandlers应该可以帮助您编写可读的轻量级控制器。
是否总是返回'student/noDataPage'或'student/homePage'的视图? – Pat 2011-06-06 18:33:54
其始终返回的视图是student/homePage(这是旧页面)。我添加了noDataPage并将其放在“if”之外。 – t0mcat 2011-06-06 18:35:43
使用调试器并找出getRollNum()从不返回null的原因。如果你找不到,请发布bundleStudentBean源码。 – abalogh 2011-06-06 19:12:12