Anonymous classe interna em Groovy
-
10-07-2019 - |
Pergunta
Eu estou olhando para a integração Groovy-postigo ea falta de classes internas anônimas parece ser um problema ao escrever os manipuladores de eventos. Existe uma maneira groovier de escrever este código
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"}
}
Solução
Posso estar errado, mas não é isso o que o WickeBuilder tenta resolver :
Os implementos utilidade Wicket Builder um construtor Groovy para a construção árvores Wicket de componentes.
Ao usar o construtor faz edifício árvores componente mais fácil e mais clara para o leitor, o motorista original o fato de que Groovy não permite anônimos classes internas. Postigo depende substituindo métodos para fornecer funcionalidade personalizada para muitos tipos de componentes. Groovy pode ser usado Para codificar classes de página Wicket, mas cada classe que é necessidades substituídos uma nomeados definição de classe. Possível, mas desajeitado.
O WicketBuilder simula estes sobreposições com Closures nomeados. Closures são, essencialmente, portátil blocos de código. Sob o capuz, o construtor cria classe dinâmica Sobreposições e executa os fechamentos quando o método chamado é chamado.
[...]
Outras dicas
Ermh .. Isto não se parece com uma "boa" alternativa, mas parece ser o Groovy alternativa "oficial":
comlete exemplo para Groovy 1.7.x e postigo 1.4.x http://wash-inside-out.blogspot.com/2010/08/wicket-and-groovy-integration.html
Eu realmente não usar Groovy, muitas vezes, mas pediu-me a alguns meses mesma pergunta atrás. i experimentou diferentes abordagens
http: //rschmid.wordpress. com / 2009/05/03 /-anônimo-interno-aulas-in Groovy /
Groovy 1.7 e suporte acima anônimos classes internas. Veja Groovy 1.7 notas de lançamento .