Das TreeControl 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 ProductTreeBrowseAction auf. Da wir die BusinessLogik nicht an dieser Stelle implementieren möchten, leiten wir das Ereignis an eine andere Action - ProductDisplayAction - 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.ControlActionContext;
import com.cc.framework.ui.control.TreeControl;
import com.cc.sampleapp.common.Forwards;
public class ProductTreeBrowseAction extends FWAction {
/**
* @see com.cc.framework.adapter.struts.FWAction#doExecute(ActionContext)
*/
public void doExecute(ActionContext ctx)
throws IOException, ServletException {
try {
ProductGroupDsp data = DBProduct.fetch();
TreeControl products = new TreeControl();
products.setDataModel(data);
ctx.session().setAttribute("products", products);
}
catch (Throwable t) {
ctx.addGlobalError("Error: ", t);
}
// Display the Page with the Tree
ctx.forwardToInput();
}
// ------------------------------------------------
// Tree-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 products_onDrilldown(ControlActionContext ctx, String key) {
ctx.forwardByName(Forwards.DRILLDOWN, key);
}
}
Der Name der CallBack-Methode setzt sich dabei aus dem Property-Namen des TreeControls - dem Namen der Bean - und dem eingetretenen Event zusammen. Da das TreeControl unter dem Namen "products" in der Session abgelegt wurde, lautet der Name der CallBack-Methode products_onDrilldown.
zurück |
weiter
|