【问题标题】:tapestry jquery PageScroll挂毯 jquery PageScroll
【发布时间】:2016-03-15 00:34:25
【问题描述】:

我正在尝试使用tapestry5 jquery 组件PageScroll 进行无限滚动。

  • 挂毯5 - 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),但失败了。

我的问题是为什么不传递可以转换为 int 的字符串“1”(pageNumber)?

我的第二个问题是为什么 PageScrollDemo.tml 中的 pageNumber 是强制性的?如果我从 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?

【问题讨论】:

    标签: jquery infinite-scroll tapestry


    【解决方案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: "[]"
    

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

    【讨论】:

      猜你喜欢
      • 2017-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多