Скрытое поле калитки в форме: исключение при вводе значений - PullRequest
1 голос
/ 08 сентября 2010

в формах калитки получить скрытое поле.В Интернете я обнаружил, что это скрытое поле необходимо для какой-то обработки событий.(Кто-нибудь знает более подробную информацию?)

Я поиграл с XSS-Me (https://addons.mozilla.org/de/firefox/addon/7598/) плагином Firefox, который пытается найти уязвимости XSS. Что делает аддон, так это то, что он вводит некоторые значения вэто скрытое поле, а затем выбрасывает wicket: WicketRuntimeException: попытка получить доступ к неизвестному интерфейсу прослушивателя запросов null

Кто-нибудь знает, как можно предотвратить или исключить это исключение?*

полный след:

ERROR - RequestCycle               - Attempt to access unknown request listener interface null
org.apache.wicket.WicketRuntimeException: Attempt to access unknown request listener interface null
   at org.apache.wicket.markup.html.form.Form.dispatchEvent(Form.java:1327)
   at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:874)
   at sun.reflect.GeneratedMethodAccessor41.invoke(Unknown Source)
   at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
   at java.lang.reflect.Method.invoke(Method.java:597)
   at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:182)
   at org.apache.wicket.request.target.component.listener.ListenerInterfaceRequestTarget.processEvents(ListenerInterfaceRequestTarget.java:73)
   at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:92)
   at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1250)
   at org.apache.wicket.RequestCycle.step(RequestCycle.java:1329)
   at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1428)
   at org.apache.wicket.RequestCycle.request(RequestCycle.java:545)
   at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:479)
   at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:312)
   at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1089)
   at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:365)
   at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
   at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
   at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
   at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
   at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
   at org.mortbay.jetty.Server.handle(Server.java:295)
   at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:503)
   at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:841)
   at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:639)
   at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:210)
   at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:379)
   at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:226)
   at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442) 

1 Ответ

1 голос
/ 08 сентября 2010

Поскольку Wicket имеет открытый исходный код, вы, конечно, можете понять это, посмотрев на источник.

Я полагаю, что поле используется для обработки событий Ajax, и ему присваивается значение с помощью JavaScript, прикрепленного к ссылке в качестве метода onclick при рендеринге. Вы можете увидеть, где сделан этот javascript, взглянув на исходный код org.apache.wicket.markup.html.form.SubmitLink method getTriggerJavaScript, и увидеть разметку, полученную с помощью firebug.

Многие из методов в Wicket являются окончательными, поэтому вы не можете их переопределить, и отмечены призывами Javadoc, чтобы не вызывать их самостоятельно, и особенно в области отправки формы, где используется это поле, этот вызов происходит раньше цикл, чем большинство стандартных ловушек для обработки формы подкласса, поэтому попытка перехватить WicketRuntimeException и обработать его способом, специфичным для этого поля, может быть затруднена.

Поймать его и показать пользовательскую страницу ошибки, конечно, можно, как описано на вики-странице на страницах ошибок , и в любом случае это хорошая вещь.

...