Das TreeListControl generiert bei einem Klick auf ein Label automatisch ein onDrilldown-Event auf das der Programmierer innerhalb der Action-Klasse reagieren kann.
Um in unserem Beispiel auf dieses Ereignis zu reagieren, nehmen wir eine entsprechende Callback-Methode in der RegionBrowseAction auf. Da wir die Businesslogik nicht an dieser Stelle implementieren möchten, leiten wir das Ereignis an eine andere Action - RegionDisplayAction - weiter.
import java.io.IOException;
import javax.servlet.ServletException;
import com.cc.framework.adapter.struts.ActionContext;
import com.cc.framework.adapter.struts.FWAction;
import com.cc.framework.ui.control.TreeListControl;
public class RegionBrowseAction extends FWAction {
/**
* @see com.cc.framework.adapter.struts.FWAction#doExecute(ActionContext)
*/
public void doExecute(ActionContext ctx)
throws IOException, ServletException {
try {
RegionGroupDsp dspData = DBRegion.fetchDspOutline();
TreelistControl regionList = new TreelistControl();
regionList.setDataModel(dspData);
ctx.session().setAttribute("regions", regionList);
}
catch (Throwable t) {
ctx.addGlobalError("Error: ", t);
}
// Display the Page with the TreeList
ctx.forwardToInput();
}
// ------------------------------------------------
// TreeList-Control Event Handler
// ------------------------------------------------
/**
* This Method is called when the TreeLabel is clicked
* In our Example we switch to the DetailView, which shows
* more Information about the node.
* @param ctx ControlActionContext
* @param key UniqueKey, as created in the Datamodel
*/
public void regions_onDrilldown(ControlActionContext ctx, String key) {
ctx.forwardByName(Forwards.DRILLDOWN, key);
}
}
Der Name der CallBack-Methode setzt sich dabei aus dem Property-Namen des TreeListControls - dem Namen der Bean - und dem eingetretenen Event zusammen. Da das TreeListControl unter dem Namen "region" in der Session abgelegt wurde, lautet der Name der CallBack-Methode regions_onDrilldown.
zurück
|