Hi WarnerJan,

The code you showed should work. The link doesn't have to be connected to the 
page.
Btw Page has a "addControl" method, not an "add" method. Are you sure "this" is 
a page?

I suggest you enable trace mode and see if the controls onProcess methods are called. Have you perhaps overridden one of the containers onProcess method without calling super.onProcess?

Here is a small test to show that actions are fired for nested controls:

public class TestPage extends BorderPage {

    private ActionLink myLink = new ActionLink("link", this, "onLinkClick");

    public void onInit() {
        C c1 = new C();
        c1.setName("c1");
        addControl(c1);

        C c2 = new C();
        c2.add(myLink);
        c1.add(c2);
        // Hierarchy -> c1.c2.myLink
    }

    public boolean onLinkClick() {
        msg = "ControlListenerPage#" + hashCode()
            + " object method <tt>onLinkClick()</tt> invoked.";

        return true;
    }

    class C extends AbstractContainer {

    }
}


WarnerJan Veldhuis wrote:
Hi,

How do I go about firing actionevents for nested controls? This is my code:

8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8< ----- 8<

ActionLink first = new ActionLink("firstLink", this, "onFirst");
first.setParameter("configuration", String.valueOf(configID));
first.setImageSrc("/resources/images/icons/first.png");

navigation.add(first); //navigation = an AbstractContainer
container.add(navigation); //container = another AbstractContainer
this.add(container); // "this" is the page

 >8 ----- >8 ----- >8 ----- >8 ----- >8 ----- >8 ----- >8 ----- >8

The method public boolean onFirst() is never reached.I assume it has to do with the ActionLink not being in the Page but in a container which is in a container. What do I do wrong here?

Cheers,

WarnerJan


Reply via email to