我有一个控制器类,可以在学生数据库上进行搜索并显示它 信息。现在,无论是否找到特定的学生,它都会显示相同的屏幕。 如果后端搜索没有返回任何数据,我打算显示不同的视图。为了这 我使用if else块编码我的控制器(找到的数据:显示视图,否则显示不同的视图)但是 它似乎没有工作。在任何情况下,我都看到相同的视图返回。在这个样本中 学生/主页。我在这里做错了什么?
@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";
}
}
答案 0 :(得分:1)
而不是检查rollNum是否为null,更好地检查它的值是否为零。有可能函数返回零,即使你没有给它任何值。大概数据库中你可能已经将列设置为非null和int
答案 1 :(得分:1)
良好做法:控制器方法应尽可能轻巧。
不良做法:using Exceptions as control flow。
Spring MVC使用ExceptionHandlers提供了一种很好的将业务例外映射到自定义视图的方法。我认为这只是Controller正在寻找学生并且没有找到的情况之一 - 使用ExceptionHandlers可以帮助您编写可读的轻量级控制器。