2009-11-24 3 views
3

У меня возникли проблемы с фиксацией причины исключения RuntimeException в приложении Wicket. Я установил множество точек останова, но никто не стреляет, когда я отправляю свою форму, только когда форма загружается. Вот стек:Problematic Wicket RuntimeException

WicketMessage: Нет Метод прибудут определена для класса: выражение класса this.is.my.class.WicketDocumentModel: DocumentUpload

первопричина:

org.apache.wicket.WicketRuntimeException : Нет метода get для класса: class this.is.my.class.WicketDocumentModel выражение: DocumentUpload at org.apache.wicket.util.lang.PropertyResolver.getGetAndSetter (PropertyResolver.java:445) at org.apache.wicket .util.lang.PropertyResolver.getObjectAndGetSetter (PropertyResolver.java:287) на org.apache.wicket.util.lang.PropertyResolver.getValue (PropertyResolver.java:90) на org.apache.wicket.model.AbstractPropertyModel.getObject (AbstractPropertyModel.java:117) на org.apache.wicket.Component .getDefaultModelObject (Component.java:1664) at org.apache.wicket.Component $ 3.compare (Component.java:548) at org.apache.wicket.Component.setDefaultModelObject (Component.java:3049) at org. apache.wicket.markup.html.form.FormComponent.updateModel (FormComponent.java:1168) по адресу org.apache.wicket.markup.html.form.upload.FileUploadField.updateModel (FileUploadField.java:100) at org. apache.wicket.markup.html.form.Form $ FormModelUpdateVisitor.component (Form.java:225) at org.apache.wicket.markup.html.form.FormComponent.visitComponentsPostOrderHelper (FormComponent.java:514) at org.apache.wicket.markup.html.form.FormComponent.visitComponentsPostOrderHelper (FormComponent.java:493) at org.apache.wicket.markup.html.form.FormComponent.visitComponentsPostOrder (FormComponent .java: 465) at org.apache.wicket.markup.html.form.Form.internalUpdateFormComponentModels (Form.java:2051) at org.apache.wicket.markup.html.form.Form.updateFormComponentModels (Form.java : 2019) по адресу org.apache.wicket.markup.html.form.Form.process (Form.java:984) по адресу org.apache.wicket.markup.html.form.Form.process (Form.java:911) at org.apache.wicket.markup.html.form.Form.onFormSubmitted (Form.java:876) по адресу java.lang.reflect.Method.invoke (Method.java:597) at org.apache.wicket .RequestListenerInterfa ce.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.processEventsRequest (RequestCycle.java:1250) at org.apache.wicket.RequestCycle.step (RequestCycle.java:1329) at org.apache.wicket. RequestCycle.steps (RequestCycle.java:1428) на org.apache.wicket.RequestCycle.request (RequestCycle.java:545) на org.apache.wicket.protocol.http.WicketFilter.doGet (WicketFilter.java:456) по адресу org.apache.wicket.protocol.http.WicketFilter.doFilter (WicketFilter.java:289) на org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) на org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) на org.apache.catalina.core. StandardWrapperValve.invoke (StandardWrapperValve.java:233) на org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:175) на org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) по адресу org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) по адресу org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:263) at org.apache.jk.server.JkCoyoteHandler.invoke (JkCoyoteHandler.java:190) at org.apache.jk.common.HandlerRequest.invoke (HandlerRequest.java:283) at org.apache.jk.common.ChannelSocket. invoke (ChannelSocket.java:767) на org.apache.jk.common.ChannelSocket.processConnection (ChannelSocket.java:697) на org.apache.jk.common.ChannelSocket $ SocketConnection.runIt (ChannelSocket.java:889) at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:690) at java.lang.Thread.run (Thread.java:619)

Я нашел дискуссию по аналогичной проблеме here, но мне не удалось ввергнуть представленный здесь совет в решение для моей ситуации. Мой класс не содержит переменную Java с именем DocumentUpload, но содержит следующее:

fuf = new FileUploadField("DocumentUpload"); 

ответ

6

Я провел несколько часов по этому вопросу, и еще раз, я понял это 20 минут после того, как я отправил так об этом. Исправление превратить объявление поля загрузки в один, который обеспечивает модель, как это:

fuf = new FileUploadField("DocumentUpload", new Model<FileUpload>()); 

EDIT: Оказывается, это было связано с 1.3 -> 1.4 миграции. Согласно migration guide,

FileUploadField - теперь требует модель

FileUploadField теперь требует модель. Это означает, что если вы ранее использовали конструктор ID-only> (то есть новый FileUploadField («myFileField»)), вам нужно будет изменить его, чтобы включить> модель (т.е. новый FileUploadField («myFileField», new Model())) ,

+0

Yup .. У вас возникла проблема с методом «не получить метод», потому что он предполагал ComponentPropertyModel (iirc) и пытался прочитать его модели оттуда, не найдя метод get для «DocumentUpload». Вы можете принимайте свой ответ в качестве ответа .. – Tim