【问题标题】:type convert exception in spring mvc3spring mvc3中的类型转换异常
【发布时间】:2012-04-02 02:40:25
【问题描述】:

我在我的应用程序中使用 sping3 mvc。

我有一些实体需要 CRUD 操作。

查询记录时,可能需要分页,所以我创建了分页类:

class Pagination{
  int page,
  int pageSize,
  String sort;
}

这是我的道:

public List<Post> list(Pagination pagination) {
             /////
    return xxx;
}

在控制器中:

@RequestMapping(value = "/", method = RequestMethod.GET)
public String list(@RequestParam int page,@RequestParam int pageSize,@RequestParam String sort) {
            List<Post> posts=postDao.list(new Pagination(page,pageSize,sort));
    return "";
}

现在,如果httprequest中没有pagepageSize参数,它会抛出typeconvert异常,事实上,我知道我可以重定向到异常页面但我不想要这个。在这种情况下,我想使用一些默认配置,例如:

http://xx/post/list ==>不分页返回所有记录

http://xx/post/list?page=1&pageSize=10&sort=id ==>分页

http://xx/post/list?page=1 ==>使用默认 pageSize(可能是 10)和 sort(id) 进行分页

http://xx/post/list?page=notnumber&pageSize=10 ==>page=1 分页

那我想知道在哪里以及如何验证和重置 Pagination 参数?

【问题讨论】:

    标签: spring spring-mvc pagination


    【解决方案1】:

    您可以将int page和pageSize的参数数据类型更改为String page和String pageSize,然后您只需检查传递的参数值是否不为null。如果参数值不为空,则使用传递的值,否则使用默认值。 像这样

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String list(@RequestParam String page,@RequestParam String pageSize,@RequestParam String sort) {
           if(page ==null)
                 page=1; // assign page default value 1 because user didn't pass page value.
           if(pageSize==null)
                 pageSize=10; // assign pageSize default value 10 because user didn't pass pageSize value.
          List posts=postDao.list(new Pagination(page,pageSize,sort));
        return "";
    }

    【讨论】:

      【解决方案2】:

      你必须明白你发送的请求参数会从String转换为int,如果你直接接收String并调用你的Pagination构造函数会更好。

      您最多可以使用条件指令内联或其他逻辑。 在此方法中,您将调用构造函数 Pagination,仅在收到通知时传递请求的值,另一种方法将发送您必须放入常量中的默认值。

      @RequestMapping(value = "/", method = RequestMethod.GET)
      public String list(@RequestParam String page, @RequestParam String pageSize, @RequestParam   String sort) {
        List posts = postDao.list(new Pagination(
            StringUtils.isEmpty(page) ? page : "1",
            StringUtils.isEmpty(pageSize) ? pageSize : "15",
            StringUtils.isEmpty(sort) ? sort : "asc"));
        return "";
      

      }

      【讨论】:

        猜你喜欢
        • 2021-02-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-17
        • 2016-01-16
        • 1970-01-01
        • 1970-01-01
        • 2014-06-09
        相关资源
        最近更新 更多