2011-06-06 170 views
1

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

是否总是返回'student/noDataPage'或'student/homePage'的视图? – Pat 2011-06-06 18:33:54

+0

其始终返回的视图是student/homePage(这是旧页面)。我添加了noDataPage并将其放在“if”之外。 – t0mcat 2011-06-06 18:35:43

+0

使用调试器并找出getRollNum()从不返回null的原因。如果你找不到,请发布bundleStudentBean源码。 – abalogh 2011-06-06 19:12:12

回答

1

而不是检查rollNum是否为空,更好地检查它的值是否为零。即使你对它没有任何价值,函数也可能返回零。大多数情况下,在数据库中你可能会设置列不为空,并且int

1

好的做法:控制器方法应尽可能轻量级。

不良做法:using Exceptions as control flow

Spring MVC有一个很好的方法将业务异常映射到自定义视图使用ExceptionHandlers。我认为这只是控制器正在寻找学生而没有发现的情况之一 - 使用ExceptionHandlers应该可以帮助您编写可读的轻量级控制器。