Archive for March, 2008

ColdFusion 8.1 em breve

Friday, March 28th, 2008

Ontem após a apresentação do Ben Forta no Rio, perguntei sobre um bug que encontrei ao utilizar bind de CFCs com as novas tags baseadas em Ajax do ColdFusion 8 e ele disse que, se não foi resolvido no último hot-fix, este será resolvido no próximo updater, com previsão de lançamento para o começo de abril.

Flex 1.5? O que ele está fazendo aqui?

Monday, March 24th, 2008

Hoje ao conferir um log via console do JRun vi que o ColdFusion 8 ainda traz embutido o Flex 1.5! Não sei porque, mas ele ainda está lá:

24/03 20:31:21 INFO License Service: Flex 1.5 CF Edition enabled
24/03 20:31:21 INFO Starting Flex 1.5 CF Edition

Adobe Developer Week

Friday, March 21st, 2008

Na próxima semana a Adobe realizará uma série de eventos on-line para desenvolvedores, a Adobe Developer Week. São mais de 20 sessões cobrindo diversas tecnologias como AIR, Flex, ColdFusion etc. Estou interessado na apresentações sobre o Blaze DS, se tiver tempo assistirei.

JavaScript e CFDIV

Wednesday, March 19th, 2008

Atualizando… a solução para este problema pode ser encontrada aqui.

Ao portar código HTML para uma nova abordagem utilizando a tag CFDIV, um dos novos componentes baseados em AJAX do ColdFusion 8, encontrei problemas com código javascript a ser executado na página “incluída”. No exemplo abaixo, a função “teste” na página action.cfm não é executada (apresentando erro javascript):

<cfdiv id=”meuDiv” bind=”url:/action.cfm”/>

Página action.cfm:

<script>
function teste(){
alert(“Testando…”)
}
</script>

<a href=”javascript: teste()”>Testar</a>

Para que a função seja executada, esta precisa ser movida para a página principal, conforme o código abaixo:

<script>
function teste(){
alert(“Testando…”)
}
</script>

<cfdiv id=”meuDiv” bind=”url:/action.cfm”/>

E a página action.cfm:

<a href=”javascript: teste()”>Testar</a>

O problema é que funciona, mas é uma solução MUITO ruim.

Envio assíncrono de formulários com JavaScript e ColdFusion8

Tuesday, March 18th, 2008

O exemplo abaixo demonstra como submeter um formulário de forma assíncrona utilizando JavaScript através das bibliotecas AJAX:

<cfajaximport>
<script>
function enviar() {
ColdFusion.Ajax.submitForm(‘myform’, ‘action.cfm’, callback, errorHandler);
}

function callback(text)
{
alert(“Callback: ” + text);
}

function errorHandler(code, msg)
{
alert(“Error! ” + code + “: ” + msg);
}
</script>
</head>

<body>
<cfform name=”myform”>
<cfinput name=”nome”>
</cfform>

<a href=”javascript: enviar()”>Enviar</a>
</body>
</html>

O código a seguir corresponde à página action.cfm:

<cfoutput>#form.nome#</cfoutput>

Invocando métodos de componentes ColdFusion com Ajax

Friday, March 14th, 2008

O exemplo a seguir mostra como invocar um método de um CFC utilizando a tag CFAJAXPROXY. Esta tag cria um proxy no cliente para um componente, ou seja, podemos invocar métodos deste componente sem fazer refresh na página, a requisição é feita “por baixo dos panos”.

<cfajaxproxy cfc=”meuComp”>

<script type=”text/javascript”>

var getName = function(){
var m = new meuComp();
m.setHTTPMethod(“POST”);
m.setCallbackHandler(myCallbackHandler);
m.setErrorHandler(myErrorHandler);
m.echo(‘Testenildo da Silva’);
}

var myCallbackHandler = function(res)
{
alert(res)
}

var myErrorHandler = function(statusCode, statusMsg)
{
alert(‘Status: ‘ + statusCode + ‘, ‘ + statusMsg);
}

</script>

<a href=”javascript: getName()”>Teste</a>

Código do componente meuComp.cfc:

<cfcomponent>

<cffunction name=”echo” access=”remote” output=”false”>
<cfargument name=”nome” type=”String” required=”true” />
<cfreturn “created ” & arguments.nome>
</cffunction>

</cfcomponent>

Para provocar um erro  e testar a função myErrorHandler experimente não passar o parâmetro para o método “echo”.

Um modificação que acho muito importante em relação ao exemplo da documentação é a inclusão do método “setHTTPMethod” para passar invocar o método do componente através de POST e não de GET evitando erros com o tamanho da URL gerada.

Envio assíncrono de formulários com ColdFusion 8 e Ajax.

Thursday, March 13th, 2008

Segue um exemplo para submeter formulários de forma assíncrona com ColdFusion e Ajax que não funciona em porque um dos campos do formulário usa o nome “action”:

<cfoutput>#now()#</cfoutput><br>

<cfdiv>
<h3>Teste 1</h3>
<cfform name=”myform” format=”html” action=”result.cfm”>
teste 1 <cfinput type=”Text” name=”name”>
<cfinput type=”submit” name=”submit” value=”Enter name”>
</cfform>
</cfdiv>
<br>
<br>
<cfdiv>
<h3>Teste 2</h3>
<cfform name=”myform” format=”html” action=”result.cfm”>
teste 2 <cfinput type=”Text” name=”action”>
<cfinput type=”submit” name=”submit” value=”Enter name”>
</cfform>
</cfdiv>

E a página result.cfm:

<cfoutput>#Form.fieldNames#</cfoutput>

Se alguém tiver explicação para isso, por favor, avise, eu não achei nada na documentação.

ColdFusion Ajax Features

Wednesday, March 12th, 2008

Após migrar da versão 7.02 do ColdFusion 7.02 para a versão 8, comecei a testar as novas features para componentes baseados em Ajax e estou um pouco decepcionado.

O comportamento do atributo “bind” em algumas tags é completamente inesperado, principalmente ao comparar “binds de urls” e “binds de cfcs”.

Também tenho tido problemas com um bug (70775) que pode ter sido solucionado no Hot Fix 3 mas aqui, mesmo após a instalação do update, continuo com o erro. Escrevi para o Ben Forta, já que isso foi alvo de discussão em um post no blog dele.

Também tive problemas ao incluir um campo em um formulário com nome “action” (um erro 404 é retornado após o formulário ser submetido), a princípio achei que o erro tinha sido meu, em não ler a documentação, mas após consultar o capítulo “Reserved Words and Variables” não achei nada que me apontasse o problema.

Sou cabeça dura e não pretendo abrir mão das funcionalidades que os componentes prometem, mas a vantagem do ColdFusion em relação ao Flex é a rapidez na codificação, se essa produtividade for para o ralo em função de problemas como esses, vou optar pelo Flex mesmo.

Vale lembrar que não houve necessidade de alteração de código para a migração, apenas aplicações Flex 1.5 foram migradas para Flex 2.0.

Ben Forta no Brasil

Tuesday, March 4th, 2008

Conforme noticiado pelo Tofinha, o Ben Forta estará no Brasil nos dias 25 (São Paulo), 26 (Brasília) e 27 (Rio de Janeiro) de março apresentando os novos produtos Flex 3 e AIR. Faça sua inscrição gratuitamente aqui. Eu ja fiz a minha.