quarta-feira, 20 de junho de 2012

Label.enabled = false

Numa aplicação utilizei uma label que ao ser clicada iria executar um determinado procedimento sendo que poderia ficar desabilitada. O que me intrigou é que mesmo quando desabilitada ela executava o evento click.

O comportamento default dos demais componentes quando desabilitado é ficar com a fonte acinzentada e não disparar o evento click. Mas para minha surpresa a Label Spark não faz nenhuma nem outra coisa. Olhando a documentação vi que ela não possui o state disabled, na verdade não possui nenhum state, como há no Button, por exemplo.

Mas, testando a Label MX, vi que ela também dispara o evento click mas fica com a letra acinzentada.

segunda-feira, 11 de junho de 2012

Endpoint só com o contexto

Quando se cria uma aplicação Flex + Java + BlazeDS o services-config.xml é criado dessa forma:
<endpoint url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/>

E na hora da compilação este arquivo é lido e o compilador no lugar de server.name coloca localhost e em server.port coloca 8080 e context.root é colocado como está configurado no Flash Builder que normalmente é o nome da aplicação.

Enquanto estivermos trabalhando local, tudo funciona beleza, mas quando passamos a nossa aplicação para um servidor de produção, as requisições AMF simplesmente deixam de funcionar porque estão tentando acessar localhost e não o ip ou nome do servidor onde hospedamos, e por segurança o Flash Player não permite acessar algo externo ao servidor.

Para resolver isso eu altero meu endpoint removendo server.name e server.port ficando como abaixo:
<endpoint url="{context.root}/messagebroker/amf" class="flex.messaging.endpoints.AMFEndpoint"/> 

Com isso não me preocupo mais com servidor onde hospedo minha aplicação, só preciso manter o mesmo contexto.

Pode-se mudar também messagebroker/amf, mas para isso será necessário alterar também o web.xml para que o MessageBrokerServlet "saiba" qual url deve interceptar.

Uma outra dica é digitar no navegador: {server.name}/{context.root}/messagebroker/amf se a aplicação foi startada corretamente então irá aparecer uma tela em branco.

Veja também:
Externalizing Service Configuration using BlazeDS and LCDS