JSTL解析负数java.lang.NumberFormatException:对于输入字符串:“”

时间:2017-05-26 14:35:30

标签: java jsp jstl jsp-fragments

我请求网址http://localhost:8080/myApp/reg/show?pageNumber=1&pageRange=-1 并且在 show.jsp 我有

<ts:pagination allData="${tecBacking.tec}"  
          pageRange="${param.pageRange}"
          pageNumber="${param.pageNumber}"
          url="show">
     <jsp:attribute name="tableHeaders">
          <th>Идентификатор</th>
          <th>Код</th>
          <th>Описание</th>
          <th>Тип</th>
          <th>Създадено от</th>
     </jsp:attribute>
</ts:pagination>

我的分页标记

<%@tag description="This is for common pagination" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%-- The list of normal or fragment attributes can be specified here: --%>

<%@attribute name="tableHeaders" fragment="true" required="true"%>
<%@attribute name="allData" required="false" type="java.util.Collection"%>
<%@attribute name="pageNumber" required="false" type="java.lang.Long"%>
<%@attribute name="pageRange" required="false" type="java.lang.Long"%>
<%@attribute name="url" required="false"%>

<c:set target="${paginationModel}" property="objects" value="${(empty allData) ? paginationModel.objects : allData}" />
<c:set target="${paginationModel}" property="pageNumber" value="${(empty pageNumber) ? 1 : pageNumber}" />
<c:set target="${paginationModel}" property="pageRange" value="${(empty pageRange) ? 10 : pageRange}" />
<c:set target="${paginationModel}" property="url" value="${(empty url) ? paginationModel.url : url}"/>

paginationModel

@Named
@SessionScoped
public class PaginationModel implements Serializable {

    private List<List<String>> objects;
    private Long pageNumber;
    private Long pageRange;
    private String url;

    public PaginationModel() {
        objects = new ArrayList<>();
        pageNumber = 1L;
        pageRange = 10L;
        url = "";
    }
    //getters and setters
}

但是作为回应我收到了这个例外

  

javax.servlet.ServletException:javax.servlet.jsp.JspException:java.lang.NumberFormatException:对于输入字符串:“”

问题在于从 pageRange requestParam解析 -1 。我尝试在分页标记中进行更改,如:

<c:set target="${paginationModel}" property="pageRange" value="${10}" />

一切都很好,但是当我尝试

<c:set target="${paginationModel}" property="pageRange" value="${pageRange}" />

我收到同样的例外。我尝试在分页标记中调用 $ {pageRange} (并将 $ {10} 解析为 paginationModel.pageRange )和输出是

  

-1   我无法理解我的错误在哪里( paginationModel.pageRange 的类型为 java.lang.Long ,属性pageRange已设置 type =“java.lang.Long “)以及如何修复异常。

1 个答案:

答案 0 :(得分:0)

  
    

java.lang.NumberFormatException:对于输入字符串:&#34;&#34;

  
     

问题在于从pageRange requestParam解析-1。

这是不正确的。

java.lang.NumberFormatException: For input string: ""是由解析&#34;&#34; (空字符串),例如,new Long(&#34;&#34;)。在将value="${pageRange}"更改为value="${param.pageRange}"后,您可以查看您的计划是否有效吗?