2009-11-24 1 views
3

Wicket 어플리케이션에서 RuntimeException의 원인을 찾아내는 데 어려움을 겪고 있습니다. 나는 수많은 중단 점을 설정했지만 양식이로드 될 때만 양식을 제출할 때 아무 것도 실행하지 않습니다.Wicket RuntimeException의 문제가 발생했습니다.

WicketMessage : 클래스 this.is.my.class.WicketDocumentModel 표현 : DocumentUpload

근본 원인 :

org.apache.wicket.WicketRuntimeException 클래스에 정의 된 get 메소드 여기 스택입니다 : 클래스에 대해 정의 된 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) at org.apache.wicket.model.AbstractPropertyModel.getObject (AbstractPropertyModel.java:117) at 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) at 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) at org.apache.wicket.markup.html.form.Form.process (Form.java:984) at org.apache.wicket.markup.html.form.Form.process (Form.java:911)) at org.apache.wicket.markup.html.form.Form.onFormSubmitted (Form.java:876) at 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.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:456) at org.apache.wicket.protocol.http.WicketFilter.doFilter (WicketFilter.java:289) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:206) at org.apache.catalina.core. .invoke (StandardWrapperValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:109) 에서 을 호출하십시오. 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. (ChannelSocket.java:697) at org.apache.jk.common.ChannelSocket $ SocketConnection.runIt (ChannelSocket.java:889) 에서 호출하십시오. at org.apache.tomcat.util.threads.ThreadPool $ ControlRunnable.run (ThreadPool.java:690) java.lang.Thread.run (Thread.java:619)

비슷한 문제에 대한 토론을 찾았으나 거기에 제시된 조언을 내 상황에 대한 해결책으로 바꿀 수는 없었습니다. 내 클래스는 DocumentUpload라는 이름의 자바 변수를 포함하지 않는, 그러나이 포함되어 있습니까 :

fuf = new FileUploadField("DocumentUpload"); 

답변

6

나는이 문제에 대한 몇 시간을 보냈다, 다시 한번, 나는 20 분을 알아 냈어 내가 너무 그것에 대해 게시 한 후. 수정 된 내용은 업로드 필드 선언을 다음과 같이 모델을 제공하는 것으로 변경하는 것입니다.

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

EDIT : 1.3 -> 1.4 이전과 관련이 있습니다. migration guide 당,

FileUploadField는 - 지금 FileUploadField 지금 모델을 필요로 모델

이 필요합니다. 즉, 이전에 ID 전용 생성자 (예 : 새 FileUploadField ("myFileField"))를 사용했다면 모델> 새 FileUploadField ("myFileField", 새 모델())를 포함하도록 변경해야합니다. .

+0

넵 .. ComponentPropertyModel (iirc)을 가정하고 거기에서 모델을 읽으려고했기 때문에 "DocumentUpload"에 대한 get 메소드를 찾을 수 없기 때문에 "no get method defined"문제가 발생했습니다. 자신의 대답을 대답으로 받아들입니다. – Tim