The beforeOutput event occurs after data has been selected from the database and ready to be sent to client side
class CustomBehavior extends ConnectorBehavior{ @Override public void beforeOutput(StringBuffer out, HttpServletRequest http_request) { //any custom code } } component.event.attach(new CustomBehavior());
beforeOutput method receives output string buffer and incoming request data as parameters.
Event can be used to mix some custom data in XML output.
Most common use-case - header structure for the grid.
class CustomBehavior extends ConnectorBehavior{ @Override public void beforeOutput(StringBuffer out, HttpServletRequest http_request) { out.append("<head>"); out.append("<column width="50" type="dyn" align="right" color="white" sort="str">Sales</column>"); out.append("<column width="150" type="ed" align="left" color="#d5f1ff" sort="str">Book Title</column>"); out.append("</head>"); } } component.event.attach(new CustomBehavior());
In case of dyn. loading mode, one more check need to be added, to prevent data output for additional data calls.
class CustomBehavior extends ConnectorBehavior{ @Override public void beforeOutput(StringBuffer out, HttpServletRequest http_request) { String start = request.getParameter("posStart"); if (start == null) { //output only during first call out.append("<head>"); out.append("<column width="50" type="dyn" align="right" color="white" sort="str">Sales</column>"); out.append("<column width="150" type="ed" align="left" color="#d5f1ff" sort="str">Book Title</column>"); out.append("</head>"); } } } component.event.attach(new CustomBehavior());