문제

나는 그루비-늑대 통합을 조사하고 있으며 익명의 내부 수업의 부족은 이벤트 처리기를 작성할 때 문제가되는 것 같습니다. 이 코드를 작성하는 끔찍한 방법이 있습니까?

import org.apache.wicket.PageParameters
import org.apache.wicket.markup.html.basic.Label
import org.apache.wicket.markup.html.link.Link
import org.apache.wicket.markup.html.WebPage


/**
 * Homepage
 */
class HomePage extends WebPage {


    public HomePage(final PageParameters parameters) {

        // Add the simplest type of label
        add(new Label("message", "Wicket running!"));   
        def link1 = new ClickHandler("link1") //in java, defined inline
        add(link1);
    }   
}

class ClickHandler extends Link{

    ClickHandler(String id) {
        super(id);
    }

    void onClick(){println "Hi"}
}
도움이 되었습니까?

해결책

나는 틀렸을 수도 있지만 이것이 그렇지 않습니다 Wickebuilder 해결하려고합니다 :

개찰구 빌더 유틸리티는 개찰구 구성 요소 트리를 건설하기위한 그루비 빌더를 구현합니다.

빌더를 사용하면 부품 트리를보다 쉽고 명확하게 독자에게 더 명확하게 만듭니다. 원래 드라이버는 Groovy가 익명의 내부 클래스를 허용하지 않는다는 사실이었습니다. 개찰구는 많은 구성 요소 유형에 맞춤 기능을 제공하기 위해 방법을 우선적으로 사용합니다. Groovy는 개찰구 페이지 클래스를 코딩하는 데 사용할 수 있지만 재정의 된 각 클래스에는 이름이 지정된 클래스 정의가 필요합니다. 가능하지만 어리석은.

개찰부 빌더는 이름이 명명 된 클로저로 이러한 재정의를 시뮬레이션합니다. 폐쇄는 본질적으로 휴대용 코드 블록입니다. 후드 아래에서 건축업자는 동적 클래스 재정의를 생성하고 이름이 지정된 메소드가 호출 될 때 클로저를 실행합니다.

[...]

다른 팁

ERMH .. 이것은 "좋은"대안처럼 보이지 않지만 "공식적인"그루비 대안 인 것 같습니다.

내부 클래스에 대한 그루비 대안

Groovy 1.7.x 및 개찰구 1.4.x의 Comlete 예제 http://wash-inside-oun.blogspot.com/2010/08/wicket-and-groovy-integration.html

나는 실제로 그루비를 자주 사용하지 않지만 몇 달 전에 같은 질문을했습니다. 나는 다른 접근법을 시도했다

http://rschmid.wordpress.com/2009/05/03/anonymouse-inner-classes-in-groovy/

그루비 1.7 이상은 익명의 내부 클래스를 지원합니다. 그루비 1.7을 참조하십시오 릴리즈 노트.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top