0

dropdownBox には、ページのリストがあります。1 つを選択したら、そのページに移動します。

どのように実装すればよいですか? このコードを追加することになっていますが、何をすればよいかわかりませんonUpdate。ページを変更する方法が見つかりませんでした

new AjaxFormComponentUpdatingBehavior() {

  private static final long serialVersionUID = 1L;

  @Override
  protected void onUpdate(AjaxRequestTarget target) {
  }
}

アップデート:

最初の応答を試みるときの例外:

29 Jun 2012 10:07:01,772 ERROR [1215661@qtp-28488784-5] org.apache.wicket.DefaultExceptionMapper : Unexpected error occurred
org.apache.wicket.WicketRuntimeException: Method onRequest of interface org.apache.wicket.behavior.IBehaviorListener targeted at cz.isvs.reg.rob.monitor.web.BasePage$1 {event='onchange'} on component [DropDownChoice [Component id = vyjimkyPage]] threw an exception
    at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:270)
    at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
    at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:255)
    at org.apache.wicket.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
    at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:784)
    at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
    at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:255)
    at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:212)
    at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:283)
    at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:188)
    at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:244)
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:440)
    at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:326)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:260)
    ... 27 more
Caused by: java.lang.IllegalStateException: Attempt to set model object on null model of component: vyjimkyPage
    at org.apache.wicket.Component.setDefaultModelObject(Component.java:3054)
    at org.apache.wicket.markup.html.form.FormComponent.setModelObject(FormComponent.java:1498)
    at org.apache.wicket.markup.html.form.FormComponent.updateModel(FormComponent.java:1059)
    at org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior.onEvent(AjaxFormComponentUpdatingBehavior.java:154)
    at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:184)
    at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:369)
    ... 32 more
4

2 に答える 2

0

AbstractSingleSelectChoiceコンポーネント(DropDownChoiceの親)はAjaxFormComponentUpdatingBehaviorを使用できません。クラスjavadocは、AjaxFormChoiceComponentUpdatingBehaviorを参照します。

注:この動作は、選択肢では機能しません。グループは、そのためにAjaxFormChoiceComponentUpdatingBehaviorを使用します。

AjaxFormChoiceComponentUpdatingBehaviorを使用する場合は、フィールド変換、検証、およびモデルへのプッシュを実行するため、モデルを使用する必要があることも事実です...値を気にしないIDは、単純に提供できます。後で読むことのない空のモデル。

最後に、Wicketでは、RedirectException ( PageクラスとオプションのPageParametersを期待するランタイム例外)または文字列urlを期待するRedirectToUrlExceptionをスローすることにより、ブラウザーのURLを更新するリダイレクトを実行できます。

throw new RedirectToUrlException("http://www.supercoolwebsite.com/supercoolexternalpage");

vs

throw new RedirectException(SuperCoolWicketPage.class);
于 2012-06-29T11:19:45.527 に答える
0

このようなことができます

  protected void onUpdate(AjaxRequestTarget target){
   target.prependJavaScript("window.location.href='"+urlFor(new YourPage())+'");
  }

ブラウザの URL が変更されるため、リダイレクトされます。

于 2012-06-29T07:49:23.327 に答える