You can write a behaviour for it so it will be more reusable. The following is based on http://cwiki.apache.org/WICKET/request-focus-on-a-specific-form-component.html and works for both regular and ajax requests.
private final class MyLink extends AjaxFallbackLink { public void onClick(AjaxRequestTarget target) { onShowForm(target); myField.add(new FocusBehavior()); } } public class FocusBehavior extends AbstractBehavior { /** * */ private static final long serialVersionUID = 1L; @Override public void bind(Component component) { super.bind(component); component.setOutputMarkupId(true); final Response response = component.getResponse(); if (response instanceof WebResponse && !((WebResponse)response).isAjax()) { component.setComponentBorder(new IComponentBorder() { /** * */ private static final long serialVersionUID = 1L; public void renderBefore(Component component) { } public void renderAfter(Component component) { final Response response = component.getResponse(); response.write( "<script type=\"text/javascript\" language=\"javascript\">document.getElementById(\"" + component.getMarkupId() + "\").focus()</script>"); } }); } this.component = component; } private Component component; @Override public void renderHead(IHeaderResponse response) { if (response.getResponse() instanceof WebResponse && ((WebResponse)response.getResponse()).isAjax()) { response.renderOnLoadJavascript("document.getElementById('" + component.getMarkupId() + "').focus()"); } } @Override public boolean isTemporary() { return true; } } On Thu, Jan 29, 2009 at 4:07 PM, Philipp Daumke <dau...@averbis.de> wrote: > Hi Michael, > > thanks for your help, but it doesn't work yet. My code: > > TextField myField = new TextField("text"); > myField.setOutputMarkupId(true); > myField.setOutputMarkupPlaceholderTag(true); > add(myField); > > private final class MyLink extends AjaxFallbackLink > { > public void onClick(AjaxRequestTarget target) > { > onShowForm(target); > target.appendJavascript("getElementById('"+myField.getMarkupId()+ > "').focus()"); > } > } > > Is there something obviously wrong? Correct Javascript syntax and semantic? > Is there an alternative "wicket" approach so that I don't have to use > Javascript myself? > Thanks for help > Philipp > > > use target.(pre|append)Javascript if you want additional JS executed >> before/after doing the wicket-ajax stuff >> >> if you only want to set the focus (without any ajax involved), don't use >> ajaxlink, use e.g. a simple WebmarkupContainer >> >> hth, >> michael >> >> >> Philipp Daumke-2 wrote: >> >> >>> Dear all, >>> >>> I try to show and focus on a text field when clicking on a link. The >>> focus however doesn't work. I tried to follow an example in cwiki ( >>> http://cwiki.apache.org/WICKET/calling-javascript-function-on-wicket-components-onclick.html) >>> but I somehow do something wrong. I tried to add some javascript attribute >>> via AttributeAppender, but then I get a null pointer exception in onClick >>> ("target is null"). When I comment that line out (so don't add the >>> Attribute), everything works fine except that focus doesn't work. >>> >>> Any help appreciated. >>> Thanks a lot >>> Philipp >>> >>> Here's my code: >>> >>> in a WebMarkupContainer: >>> link.add(new AttributeAppender("onClick", new >>> Model("getElementById('"+textfield.getMarkupId()+ "').onFocus();"), ";")); >>> >>> in my custom Link Class: >>> public void onClick(AjaxRequestTarget target) >>> { >>> showFormThatContainsTextField(target); >>> } >>> >>> void showFormThatContainsTextField(AjaxRequestTarget target) >>> { >>> // toggle the visibility >>> ... >>> // redraw the add container. >>> target.addComponent(this); >>> } >>> >>> -- >>> >>> Averbis GmbH >>> c/o Klinikum der Albert-Ludwigs-Universität >>> Stefan-Meier-Strasse 26 >>> D-79104 Freiburg >>> >>> Fon: +49 (0) 761 - 203 6707 >>> Fax: +49 (0) 761 - 203 6800 >>> E-Mail: dau...@averbis.de >>> >>> Geschäftsführer: Dr. med. Philipp Daumke, Kornél Markó >>> Sitz der Gesellschaft: Freiburg i. Br. >>> AG Freiburg i. Br., HRB 701080 >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >>> >>> >>> >> >> >> ----- >> Michael Sparer >> http://techblog.molindo.at >> >> > > > -- > > Averbis GmbH > c/o Klinikum der Albert-Ludwigs-Universität > Stefan-Meier-Strasse 26 > D-79104 Freiburg > > Fon: +49 (0) 761 - 203 6707 > Fax: +49 (0) 761 - 203 6800 > E-Mail: dau...@averbis.de > > Geschäftsführer: Dr. med. Philipp Daumke, Kornél Markó > Sitz der Gesellschaft: Freiburg i. Br. > AG Freiburg i. Br., HRB 701080 > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > > -- Matthew Rollins Hanlon http://squareoftwo.org _____________________ Hanlon's Razor: "Never attribute to malice that which can be adequately explained by stupidity." http://wikipedia.org/wiki/Hanlon's_razor