2016-03-15 104 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: "[]" 

来自您已从模板中删除的参数上下文的默认值。