当url更改时,找不到提示页面。玩! +斯卡拉

时间:2017-10-13 02:37:46

标签: url playframework controller playframework-2.0

我在分页时在我的网页上有以下网址

http://localhost:9000/employee?p=2

每当参数" p"时,我都需要提示找不到页面。是改变。例如:

http://localhost:9000/employee?b=2

需要控制器输入notFound。我会做什么样的条件才能做到这一点?

参考:

控制器:

@Transactional(readOnly=true)
public static Result list(int pageNum, int listSize) {
  employeeMap.clear();
  Page page = appModel.page(pageNum, listSize);
  employeeMap = ListUtil.getEmpMap(employeeMap, page.getEmpList());
  AppModel employees = new AppModel(employeeMap, searchMap);
  /* if statement initiate a notFound page if pageNum us not the expected value */
  if (pageNum < 0 || pageNum > page.getPage().get("intLastPage")) {
  return notFound("<h1>Page not found</h1>").as("text/html");
}
  /* if statement that put a not search found message if no employee is found */
  if (page.getEmpList().size() == 0) {
  flash("success", "There is no search results for the specified conditions");
}
return ok(index.render(appModelForm.fill(employees),page));
}

路线:

# Employee list (look at the default values for pagination parameters)
GET     /employee                   controllers.Application.list(p:Int ?= 1,l:Int ?= 125)

1 个答案:

答案 0 :(得分:1)

您可以通过更改路由来阻止人们整体更改参数名称。但要实现您想要做的所有可能性,您可以执行以下操作:

  GET     /employee/:p/:l        controllers.Application.list(p:Int ?= 1,l:Int ?= 125)
  GET     /employee/p/:p         controllers.Application.list(p:Int, 125)
  GET     /employee/l/:l         controllers.Application.list(1, l:Int) 

这取决于您如何处理模板中的URL调用,但如果您可以在URL中自动生成默认参数(如果用户没有将其放入),您可以自己保留第一个。

召唤您的控制器的URL现在将改为:

    http://localhost:9000/employee/p/2
    http://localhost:9000/employee/l/4
    http://localhost:9000/employee/2/4

然后您可以将任何其他内容路由到未找到的控制器方法:

 GET     /employee/--String, empty or whatever else---       controllers.Application.returnNotFound

@Transactional(readOnly=true)
public static Result returnNotFound() {

   return notFound("<h1>Page not found</h1>").as("text/html");

}