Request Focus on a Specific Form Component has been edited by James Carman (Mar 11, 2008).

(View changes)

Content:
  1. To request focus for a component, we need to use a little _javascript_, we can do so using a behavior:
    public class FocusOnLoadBehavior extends AbstractBehavior
    {
        private Component component;
    
        public void bind( Component component )
        {
            this.component = component;
            component.setOutputMarkupId(true);
        }
    
        public void renderHead( IHeaderResponse iHeaderResponse )
        {
            super.renderHead(iHeaderResponse);
            iHeaderResponse.renderOnLoadJavascript("document.getElementById('" + component.getMarkupId() + "').focus()");
        }
    }
  2. Now, to use that behavior, all we have to do is:
    public class MyPage extends WebPage
    {
      public MyPage()
      {
        Form form = new Form("form");
        TextField field1 = new TextField("field1");
        field1.add(new FocusOnLoadBehavior());
        form.add(field1);
        add(form);
      }
    }

Reply via email to