问题标签 [wicket-1.5]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
719 浏览

wicket - 如何处理 Wicket 1.5 中的 IResourceStreamWriter API 更改?

在 Wicket 1.4 中,我有一个自定义 AbstractResourceStreamWriter(用于自定义类型的链接,用于流式传输动态生成的文件):

在 Wicket 1.5 中,IResourceStreamWriter接口已更改,以便该方法获取Response而不是 OutputStream。IResourceStreamWriter javadocs 仍然在谈论 OutputStream 有点令人困惑:

特殊的 IResourceStream 实现,当 Resource 直接想要写入输出流而不是返回 IResourceStream.getInputStream() 时,它可以返回

...

实现该方法直接将资源数据写入给定的OutputStream。

无论如何,我看不到从响应中获取 OutputStream 的快速方法。

鉴于我有一个方法(generateReport(output, report)上面代码中的调用),它期望一个 OutputStream 写入,让这个工作再次工作的最简单方法是什么?

0 投票
1 回答
1650 浏览

java - Wicket 操纵 javascript 导入顺序

我正在尝试使用来自Visural的非常好的 ConfirmerAjaxLink 。但是,我在加载页面时得到了一个 js 脚本:“未定义 jQuery”。

我写了一个小测试页来识别问题:

快速搜索后,我看到 ConfirmerAjaxLink 将添加另一个使用 jQuery 的 javascript。但是,由于这是通过添加到组件(以上链接)的行为来完成的,所以这个脚本在 jQuery 之前被添加到标记中(因为这是在我的页面的 renderHead 之前调用的)。

如果我先将 headerRenderStrategy 更改为父级,如下所示:

它可以工作,但这更像是一种 hack,而不是一种解决方案(也如AbstractHeaderRenderStrategy:NOT OFFICIALLY SUPPORTED BY WICKET 中所述)。

有没有一个干净的方法来解决这个(我认为不是例外)问题?

0 投票
2 回答
2096 浏览

java - Any purpose of using a LoadableDetachableModel in a DataProvider?

Since it is still not 100% clear when a LDM should be used I tried a simple memory test. I created a DataView with a DataProvider that simply creates a list of few 100 entities with some big data inside (long String):

Using wicket's DebugBar is see this creates a Page with a size of 5MB. In the javadoc of DataProvider it is stated that the model return in above model method is usually a detachable one so I changed this method to:

Naively I was expecting the pagesize to be reduced in a big way now since the heavybeans will no longer be part of the model. Actual result: 5MB. Since the model will detach the heavyBean this must mean that something else still has a hold of it (DataView? Item?).

I saw other examples where DataView and DataProvider are combined in a similar fashion but for me it is unclear what the point is since it does not seem to make any difference regarding the pageSize/memory usage.

So, am I understanding/doing something wrong (likely) or are LDM's useless in DataProviders? Side question (sorry), in which scenario would you use an LDM?

0 投票
1 回答
466 浏览

java - 如何覆盖检票口中特定页面的渲染策略

我有一个应用程序需要接受来自外部服务器的 POST 请求,以确认付款。我不想破坏默认的检票口渲染策略(REDIRECT_TO_BUFFER),它可以为用户提供比 ONE_PASS_RENDER 更好的体验,但是,外部服务对 302 不满意,并不断重试直到它放弃。

是否有一些明智的方法可以告诉 wicket 仅将 ONE_PASS_RENDER 用于处理此请求的特定页面?

0 投票
1 回答
2811 浏览

drop-down-menu - Wicket DropDownChoice 设置模型值

我有一个包含数据库内容的表(Dataview),其中每一行/对象都有一个“编辑”按钮。当我尝试编辑对象时,DropDownChoice 值(在表单中)没有正确更新(即使它在数据库中是正确的)。在 DDC 中设置的值是(排序的)列表“placeList”中的第一项,我显然希望从我的对象 (event.getPlace().getName()) 中获得正确的值。

这是代码(检票口 1.5):

有人吗?

干杯,Terje Eithun,挪威

0 投票
1 回答
427 浏览

java - AjaxFallbackDefaultDataTable 的标题可以通过 AJAX 更新吗?

我目前正在编写一个 Web 应用程序。我正在使用一个AjaxFallbackDefaultDataTable来显示域对象。表格包括分页,到目前为止一切正常。

我希望能够做什么:在我的实现中,IColumn<T>我通过 Component getHeader(String componentId). 该组件取决于表当前使用的页面和页面大小(它显示了指向另一个页面的链接,该页面应该只关心当前的数据片)。现在,我已经实现了void onPageChanged()table 的方法,以便它相应地更新列。

问题: 我正在使用 Wicket AJAX 调试窗口,它显示整个表在服务器上重新呈现并发送到客户端。但是,标题似乎没有正确更新,因此我永远停留在第 0 页。使用调试器,我可以清楚地看到Component getHeader(String componentId)它只在最初创建表时被调用一次。

问题: 有什么方法可以在不编写自己的 AJAX 化数据表实现的情况下解决这个问题?如果没有,有人可以指出我正确的方向吗?

0 投票
1 回答
1117 浏览

wicket-1.5 - 如何在保留原始网址的同时重定向到另一个页面?

在我的 Wicket 1.5 Web 应用程序中,我想重定向到另一个可收藏的页面,而原始页面的 URL 应该保留

使用 setResponsePage(..)、 throw new RestartResponseException(..) 或 throw new RestartResponseAtInterceptPageException(..) 的方法都不会使 URL 保持不变。所有三个方法都重定向到 Page2更改浏览器地址栏中显示的 URL。

0 投票
1 回答
106 浏览

jquery - 有人可以告诉我在 wicket 中实现 Mega Menu 的方法吗?我的意思是我应该如何设计

例如,巨型菜单看起来像下面的站点示例 http://www.javascriptkit.com/script/script2/jkmegamenu.shtml

0 投票
2 回答
664 浏览

spring - 如何将 Spring Roo 与 Apache Wicket 一起使用?

我有一个由 Roo 创建和管理的持久层(JPA 实体对象)。它在自己的项目中,构建到一个 jar 中,我已经将它与一个单独的 Spring MVC 3 Web 应用程序一起使用。

我想在另一个由 Apache Wicket 提供支持的 Web 应用程序中使用相同的 Roo 持久性项目。我已经看到了一些为 Wicket 制作的 Roo 附加组件,但它们都没有编译(我不是唯一一个遇到问题的人)。

我遇到的问题是,每当我尝试从 Wicket 页面或组件中调用我的 Roo 实体之一时,都会出现以下异常:

我在这里按照 Spring+Wicket wiki 配置了我的应用程序:https ://cwiki.apache.org/WICKET/spring.html

有谁知道设置 Wicket 应用程序以利用 Spring Roo 实体的 1、2、3 个步骤?任何帮助表示赞赏。谢谢!

0 投票
3 回答
3447 浏览

java - Wicket 序列化/反序列化问题

假设以下组件树:

  • 一种
    • C

A 有一个私有字段(称为过滤器),对过滤器的引用传递给 B 和 C。在 B 类中,过滤器的属性通过 AjaxLink 修改(因此没有页面刷新)。我看到(通过)记录,在每个 ajax 调用之后,wicket 将序列化 A、B 和 C。

现在,一切正常,单击 B 中的 AjaxLinks 将很好地更新过滤器并将刷新 C 并在 C 中显示正确的信息(基于过滤器)。

但是,假设如果单击 B 中的 AjaxLink,它会将过滤器的属性更新为(例如)值 2。然后我按 F5,它仍然可以工作并且页面(以及其中的所有组件)被反序列化(然后再次序列化) )。然后我单击 AjaxLink 将上述属性的值更改为 3;这仍然可以正常工作。但是,如果我随后执行页面刷新 (F5),则该属性的值突然再次变为 2。

似乎在页面刷新时(当 wicket 将从磁盘加载页面时)wicket 正在反序列化旧版本的过滤器。

示意图:

  1. 页面初始加载:
    => filter.value = 3 -> 序列化
  2. AjaxLink:
    => filter.value = 2 -> 序列化
  3. 页面刷新:
    => filter.value = 2 ->反序列化/序列化
  4. AjaxLink:
    => filter.value = 3 -> 序列化
  5. 页面刷新:
    => filter.value = 2 ->反序列化/序列化

似乎在动作 5 上,动作 4 之后的序列化版本被忽略,而动作 3 之后的序列化版本被加载。

希望有原因,解释,如果可能的话还有解决方案:-)

代码

代码已经简化,我只保留了(我假设)相关的东西。

更新

如果我在我的页面类中添加以下内容,那么它可以工作:

但是不确定这会产生什么影响以及为什么它会起作用。页面不再(反)序列化了吗?

更新

我在我的 Page 类中添加了以下内容:

  1. 第一次加载页面时会打印(实际上打印了5次,不确定是否正常):编写[Page class = com.bnpp.ecom.homepage.web.Homepage, id = 0, render count = 1]:类型 = 全部

  2. 当我单击 AjaxLink 'ALL' (将更新过滤器)时,它仍然打印:Writing [Page class = com.bnpp.ecom.homepage.web.Homepage, id = 0, render count = 1]: type = ALL

  3. 当我单击 AjaxLink 'DISCUSSIONS'(将更新过滤器)时,它仍然会打印:Writing [Page class = com.bnpp.ecom.homepage.web.Homepage, id = 0, render count = 1]: type = DISCUSSIONS

  4. 当我刷新页面 (F5) 时,pageid 会更新:写入 [Page class = com.bnpp.ecom.homepage.web.Homepage, id = 1, render count = 2]: type = DISCUSSIONS

  5. 当我单击 AjaxLink 'ALL'(将更新过滤器)时,它会打印:Writing [Page class = com.bnpp.ecom.homepage.web.Homepage, id = 1, render count = 1]: type = ALL

  6. 到目前为止一切顺利,但是当我现在刷新页面(F5)时,会打印出来:Reading [Page class = com.bnpp.ecom.homepage.web.Homepage, id = 0, render count = 1]: type = DISCUSSIONS Writing [页面类 = com.bnpp.ecom.homepage.web.Homepage,id = 2,渲染计数 = 2]:type = DISCUSSIONS

网址永远不会改变,它保持http://.../?0

因此它反序列化了 id 为 0 的页面,尽管最后一个已知的页面 id 为 1,并且为版本 1 所做的所有更改都被忽略(在这种情况下,将类型从 DISCUSSIONS 切换为 ALL)。

为此在检票口 jira 中创建了一个问题:https ://issues.apache.org/jira/browse/WICKET-4360