This example contains three reports. Each report drills to another report, so we have 3 levels deep. A simple scheme for bread crumbs is implemented using session variables. In the beforeFactory event of each report we store the current url in a session variable similar to this:
tst = reportContext.getHttpServletRequest().getRequestURL()+"?";
tst += reportContext.getHttpServletRequest().getQueryString();
reportContext.getHttpServletRequest().getSession().setAttribute("level1", tst);
<br />
Each report contains three text elements that will display a href if the the session attribute level1, level2, or level3 exists. The value for the level2 text element is shown below.
< VALUE-OF Format="HTML">
var lvl2 = reportContext.getHttpServletRequest().getSession().getAttribute("level2")
if( lvl2 ){
"< A href="+lvl2+">level2< /a>";
}else{
""
}< /VALUE-OF>< a href="/modules/wfdownloads/+lvl2+">
<br />
If you want to reuse report document to not rerun when backing up use the following beforeFactory script:
importPackage( Packages.java.net );
tst = reportContext.getHttpServletRequest().getRequestURL()+"?";
tst += reportContext.getHttpServletRequest().getQueryString();
var vab = reportContext.getHttpServletRequest().getRequest().getAttribute("attributeBean");
rd = vab.getReportDocumentName();
if( rd != null ){
var erd = URLEncoder.encode( rd,"UTF-8");
tst += "&__document="+erd;
}
reportContext.getHttpServletRequest().getSession().setAttribute("level1", tst);