2016-03-15 107 views
0

我想使用tapestry5 jQuery組件PageScroll進行無限滾動。掛毯jquery PageScroll

  • tapestry5 - 5.3.8
  • tapestry5,jQuery的 - 3.4.2

到目前爲止,我得到這個:

public class PageScrollDemo { 
    private static final int PageSize = 100; 

    @Property 
    private int value; 

    @OnEvent("nextPage") 
    List<Integer> moreValues(int pageNumber) throws InterruptedException { 
     List<Integer> values = new ArrayList<Integer>(); 
     int first = pageNumber * PageSize; 
     for(int i = 0; i < PageSize; ++i){ 
      values.add(first + i); 
     } 

     Thread.sleep(1000); 
     return values; 
    } 
} 

PageScrollDemo.tml

<html xmlns:t='http://tapestry.apache.org/schema/tapestry_5_3.xsd'> 
<body> 
<h1>BEGIN</h1> 
<ul> 
    <li t:type='jquery/pagescroll' row='value' scroller='scroller' zone='zone' pageNumber="1"> 

     <li>${value}</li> 
    </li> 
    <li class='zone' t:type='zone' t:id='zone'/> 
</ul> 
<div id='scroller'></div> 
<h1>END</h1> 
</body> 
</html> 

但我得到這個錯誤

java.lang.RuntimeException 
Coercion of [] to type java.lang.Integer (via String --> Long, Long --> Integer) failed: For input string: "[]" 
java.lang.NumberFormatException 
For input string: "[]" 

Filter stack frames Stack trace 

     java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
     java.lang.Long.parseLong(Long.java:589) 
     java.lang.Long.<init>(Long.java:965) 

據我所知,tapestry試圖傳遞參數「[]」到方法moreValues(int),失敗。

我的問題是爲什麼不傳遞字符串「1」(pageNumber),它可以被轉換爲int?

我的第二個問題是,爲什麼pageNumber在PageScrollDemo.tml中是強制的?如果我從moreValues()刪除參數,可以我得到這個:

trace 

     Triggering event 'scroll' on PageScrollDemo:pagescroll 

org.apache.tapestry5.runtime.ComponentEventException 
Failure writing parameter 'pageNumber' of component PageScrollDemo:pagescroll: Literal values are not updateable. 

可能有人請我解釋如何使用Pagescroll?

回答

1

有從可用此組件的作者在https://tawus.wordpress.com/2012/11/25/scrolling-pages-tapestry5-onscrollbeyond/

一些文件,如果你看看源文檔,https://github.com/got5/tapestry5-jquery/blob/master/src/main/java/org/got5/tapestry5/jquery/components/PageScroll.java你會發現下面的代碼

@Parameter(value = "literal:[]") 
private Object[] context; 

我猜你你的代碼以在 https://github.com/got5/tapestry5-jquery/blob/master/src/test/resources/org/got5/tapestry5/jquery/pages/PageScroll.tml

你的錯誤信息樣品

java.lang.RuntimeExceptionCoercion of [] to type java.lang.Integer 
(via String --> Long, Long --> Integer) failed: For input string: "[]" 
java.lang.NumberFormatExceptionFor input string: "[]" 

來自您已從模板中刪除的參數上下文的默認值。