Pergunta

Se eu escrever

<form wicket:id="form" id="form>

ou até

<form wicket:id="form>...

Em seguida, o HTML renderizado mostra o ID 'formulário' anexado a números diferentes sempre que a página é atualizada, por exemplo

   <form id="form7"....

Existe uma maneira de desativar esse comportamento da estrutura do wicket?

Foi útil?

Solução

Este é o comportamento que você deseja na maioria dos casos ao usar o wicket. O ID dinâmico visa impedir colisões de identificação quando os comportamentos do Ajax são adicionados aos componentes ou adicionados às respostas do AJAX para refrescar. Para qualquer uma dessas situações, você realmente precisa da resposta do cliente e do estado do lado do servidor para estar em conflito. Se houver recursos JS externos, você precisará do ID de um componente para a pesquisa DOM, sugiro adicionar um comportamento de componente de postigos personalizado que geraria a chamada JS para uma função que passa no ID gerado.

Percebo que o que vou descrever leva você a mais na floresta do wicket. Mas fiquei mais do que feliz com as coisas de Ajaxy que Wicket abre para você fora da caixa.

Outras dicas

Definimos IDs de marcação manualmente extensivamente em nosso projeto para facilitar o teste automático com a estrutura de teste de selênio. Definitivamente funciona.

Component.setOutputMarkupId(true); // write id attribute of element to html
Component.setMarkupId("someid"); // id attribute of element is "someid"

Este é o recurso de desding de wicket. Você pode usar a classe para vincular estilos e componentes.

<form wicket:id="form" id="form>

Também você pode tentar (eu nunca fiz isso) setmarkupid . Não tenho certeza se é bom.

Já faz um tempo desde que trabalhei com wicket, mas lembro que quando wicket usa elementos de Ajax, seu ids são gerados automaticamente (o id da tag, não a wicket:id). Você pode controlar o ID da tag quando não estiver usando e o elemento Ajax. No seu caso, como não há código, eu acho que você terá que mudar qualquer AjaxButton ou Ajax* do seu formulário.

Sim, você pode escrever JavaScript personalizado ... você só precisa implementá -lo de acordo com o 'Wicket Way'. Você pode decorar componentes, chamadas de Ajax etc. Com JavaScript personalizado, então tudo é bom.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top