I am trying to use tapestry5 jquery component PageScroll for infinite
scrolling.

   - tapestry5 - 5.3.8
   - tapestry5-jquery - 3.4.2

So far i got this:

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>

But i get this error

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

As far i understand, tapestry is trying to pass parameter "[]" to the
method moreValues(int), which fails.

My question is why is not passing String "1" (pageNumber), which can be
casted to int?

My second question is why is even pageNumber mandatory in
PageScrollDemo.tml? If i remove params from moreValues(), i get this:

trace

        Triggering event 'scroll' on PageScrollDemo:pagescroll

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

Could somebody please explain me how to use Pagescroll?

Reply via email to