嵌套(Apache Tapestry)AjaxFormLoop

时间:2015-03-25 02:37:18

标签: tapestry

我正在使用JavaEE和Apache Tapestry框架开发webapp。任务是实现一个嵌套的AjaxFormLoop组件(即:一个循环在另一个循环中)。这是问题所在:

问题: 我正在开发一个页面,它有4级嵌套AjaxFormLoop,目前正在尝试获得第二级(也是第一个嵌套级别)。我们将外循环称为“outerLoop”,将内部循环称为“innerLoop”。问题是:我为每个“innerLoop”都有一个专用的编码器(编码器也引用了实际的服务器端对象列表)。但是,我没有办法让每个“innerLoop”知道哪个编码器适合他们。

问题:

  1. 是否有针对此的解决方法或我以错误的方式使用编码器?
  2. 是否可以实现嵌套的AjaxFormLoop?
  3. 更多详情:

    1. 我的表单可以从服务器端对象成功加载和呈现。
    2. 当表单加载时,“innerLoop”可以通过使用“outerLoop”的“value”变量访问来正确获取自己的编码器。
    3. 表单呈现后,“outerLoop”的“value”变量设置为null,这就是我开始遇到麻烦的地方。
    4. 当调用“OnAddRowFromInnerLoop”时,我可以找出哪个是“父外循环项”,因为我正在使用“t:context”,但这对编码器没有帮助。
    5. 请告诉我是否应该编写一些代码来演示(因为实际代码有点冗长)问题或者更清楚或更好地描述这个问题。

      我一直在拼命尝试一些方法,但坚持这个编码器问题,我的工作落后,所以所有的建议都非常感谢。感谢您提前的时间和帮助!

      P.S。:我已经向tapestry邮件列表发布了相同的问题,无论我在哪里找到解决方案/结论,都会在此处更新。

      您诚挚的, 博万

1 个答案:

答案 0 :(得分:0)

我刚刚通过对同一级别/类型的所有内部表单使用一个编码器实例来解决问题。编码器可以访问相同类型的所有对象,并在解码时遍历所有列表以搜索对象。