Spring MVC控制器

时间:2011-06-06 18:31:17

标签: spring spring-mvc

我有一个控制器类,可以在学生数据库上进行搜索并显示它 信息。现在,无论是否找到特定的学生,它都会显示相同的屏幕。 如果后端搜索没有返回任何数据,我打算显示不同的视图。为了这 我使用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";
      }
 } 

2 个答案:

答案 0 :(得分:1)

而不是检查rollNum是否为null,更好地检查它的值是否为零。有可能函数返回零,即使你没有给它任何值。大概数据库中你可能已经将列设置为非null和int

答案 1 :(得分:1)

良好做法:控制器方法应尽可能轻巧。

不良做法:using Exceptions as control flow

Spring MVC使用ExceptionHandlers提供了一种很好的将业务例外映射到自定义视图的方法。我认为这只是Controller正在寻找学生并且没有找到的情况之一 - 使用ExceptionHandlers可以帮助您编写可读的轻量级控制器。