【发布时间】:2017-04-28 01:13:44
【问题描述】:
我在包含数据视图的页面内创建了一个片段,其中包含一个链接。数据视图包含包含成员姓名和其他列的链接,其中包含成员信息(如生日)。该链接应该使用 JasperSoft(PDF) 显示所选成员的信息。事情是在第一次点击时一切顺利,但在下一次点击时它不会执行 onclick() 中的代码。但它仍然显示报告。它从缓存中检索数据。
private class SearchResultFragment extends Fragment {
private SearchResultFragment(String id, String markupId) {
super(id, markupId, MemberInformationReportFilterPage.this);
setOutputMarkupId(true);
DataView<Member> dataView = new DataView<Member>("dataView", dataProvider) {
protected void populateItem(Item<Member> item) {
final MemberModel memberModel = new MemberModel(item.getModelObject());
Link<Void> link = new Link<Void>("link") {
@Override
public void onClick() {
try {/*method to show the PDF report containing the member's info */
reportService.showJasperReport(LocalConstants.REPORT_SOURCE_MEMBERSHIP, getRequestCycle(), getData(memberModel), "member_information.jrxml", getParam(memberModel));
} catch (InvalidParameterException|ReportsException e) {
setRendered(false);
logger.errorException(e.getClass(), e.getMessage());
getSession().error(e.getFeedbackMessage());
}
}
};
link.add(new AttributeAppender("target", Model.of("_blank")));
item.add(link);
这里不应该从缓存中获取数据,因为不会显示成员的新更新。
请就如何确保系统始终在每次用户点击时执行 onclick 代码提出建议。谢谢
【问题讨论】:
-
是否有任何错误(JavaScript 或服务器日志中)?是否有第二次点击链接的 HTTP 请求?
-
JavaScript 或服务器日志中没有错误。我很抱歉我是个菜鸟,但我不知道如何检查是否有 HTTP 请求以第二次点击链接。
-
在浏览器的 DevTools > Network 选项卡中
-
是的,有第二次点击的 HTTP 请求。除了 If-Modified-Since 之外,第一次和第二次点击具有相同的 Request Headers 数据。
-
似乎 Wicket 出于某种原因不允许点击。你能创建一个迷你应用程序来重现问题并在某处分享吗?
标签: java hyperlink onclick wicket