我在页面内创建了一个包含Dataview的片段,里面是一个Link。数据视图包含具有成员姓名的链接以及具有成员信息的其他列,例如birthdate。链接应该使用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代码。感谢