현재 Clojure (기존 wicket 프로젝트에서)와 함께 Wicket 샘플 페이지를 만들려고합니다. 코드는 다음과 같습니다Clojure : Wicket 패널을 확장하고 패널 메서드를 호출하십시오.
페이지가 내가 런타임 오류가 다음 얻을 생성되는(ns a.set.of.packages.dataview.info.EmptyNodeInfo2Panel
(:import [a.set.of.packages.tree TreeModelBean]
[a.set.of.packages.dataview.supplemental GenericHeaderPanel]))
(gen-class
:name a.set.of.packages.dataview.info.EmptyNodeInfo2Panel
:extends org.apache.wicket.markup.html.panel.Panel
:state state
:init init
:constructors {[String a.set.of.packages.tree.TreeModelBean] [String]}
:post-init construct)
(defn -init [id model-bean]
[[id] nil])
(defn -construct [this id model-bean]
(.add this (GenericHeaderPanel. "header" model-bean)))
는 :
java.lang.IllegalArgumentException: No matching method found: add for class a.set.of.packages.dataview.info.EmptyNodeInfo2Panel
즉 나는 슈퍼 클래스의 메소드에 호출 할 수 없습니다.
디 컴파일 construct
방법은 다음과 같습니다
public Object invoke(Object this, Object id, Object model_bean)
throws Exception
{
this = null;
id = null;
model_bean = null;
return Reflector.invokeInstanceMethod(this, "add", new Object[] {
new GenericHeaderPanel((String)"header", (TreeModelBean)model_bean)
});
}
이 모든 것이 null
로 설정되는 경우! 이 문제는 생성자 매개 변수 매핑, 잘못된 디 컴파일 또는 버그와 관련이 있습니까?
"다음 형식으로 인쇄됩니다 :'[Lorg.apache.wicket.Component'] 여는 대괄호는 다음에 오는 클래스의 배열을 나타냅니다. – pmf
네, 방금 생각해 봤고 다음과 같은 방법으로 작동합니다 : (defn -construct [this id model-bean] (this를 (배열의 [GenericHeaderPanel. "header-model-bean])))) Panel 클래스의'add' 메소드에서 Wicket 워드 프로세서를 읽고 있습니다. 가변 인수를 취합니다 ... 나는 미친 날이 었어요. :) – Andrew