<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Next Framework</title>
	<atom:link href="http://www.nextframework.org/site/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nextframework.org/site</link>
	<description>Seu próximo passo em frameworks!</description>
	<lastBuildDate>Wed, 01 Feb 2012 16:13:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Next 3.5.3 Dispon&#237;vel</title>
		<link>http://www.nextframework.org/site/404/downloads/next-3-5-3-disponvel</link>
		<comments>http://www.nextframework.org/site/404/downloads/next-3-5-3-disponvel#comments</comments>
		<pubDate>Sat, 28 Jan 2012 13:33:55 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Downloads]]></category>
		<category><![CDATA[next]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/404/geral/next-3-5-3-disponvel</guid>
		<description><![CDATA[Foi liberada mais uma versão do Next Framework. Entre as principais novidades, componente de calendário para tipos de dados de data. APIs para sumarização e gráficos. Atualização de Javascripts. API para compilação dinâmica de códigos. Barra de progresso. Veja o release notes para mais informações. O next 3.5.3 pode ser baixado na seção de downloads.
Update [...]]]></description>
			<content:encoded><![CDATA[<p>Foi liberada mais uma versão do Next Framework. Entre as principais novidades, componente de calendário para tipos de dados de data. APIs para sumarização e gráficos. Atualização de Javascripts. API para compilação dinâmica de códigos. Barra de progresso. Veja o <a href="http://www.nextframework.org/download/releaseNotes.txt" target="_blank">release notes</a> para mais informações. O next 3.5.3 pode ser baixado na seção de <a href="http://www.nextframework.org/site/downloads">downloads</a>.</p>
<p><strong>Update </strong><a href="http://www.nextframework.org/download/next-3.5.3_01.jar">http://www.nextframework.org/download/next-3.5.3_01.jar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/404/downloads/next-3-5-3-disponvel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vers&#227;o 3.5.2</title>
		<link>http://www.nextframework.org/site/398/geral/verso-3-5-2</link>
		<comments>http://www.nextframework.org/site/398/geral/verso-3-5-2#comments</comments>
		<pubDate>Tue, 12 Jul 2011 19:33:56 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/398/geral/verso-3-5-2</guid>
		<description><![CDATA[Liberada a versão 3.5.2 do framework. Verifique no arquivo de Release Notes as mudanças. Baixe na seção de downloads.
]]></description>
			<content:encoded><![CDATA[<p>Liberada a versão 3.5.2 do framework. Verifique no arquivo de <a href="http://www.nextframework.org/download/releaseNotes.txt" target="_blank">Release Notes</a> as mudanças. Baixe na seção de <a href="http://www.nextframework.org/site/downloads">downloads</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/398/geral/verso-3-5-2/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>3.5.1 Build 20110420</title>
		<link>http://www.nextframework.org/site/391/geral/3-5-1-build-20110420</link>
		<comments>http://www.nextframework.org/site/391/geral/3-5-1-build-20110420#comments</comments>
		<pubDate>Wed, 20 Apr 2011 13:15:59 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/391/geral/3-5-1-build-20110420</guid>
		<description><![CDATA[Disponibilizado uma versão intermediária do Next. Esse é um nightly build, mas já foi utilizado em alguns projetos com sucesso. 
Download JAR next-3.5.1-build20110420.jar     Download Source next-3.5.1-build-20110420-src.zip    Release Notes
Essa versão não foi disponibilizada na seção de downloads pois é um nightly build.    Será necessário fazer o [...]]]></description>
			<content:encoded><![CDATA[<p>Disponibilizado uma versão intermediária do Next. Esse é um nightly build, mas já foi utilizado em alguns projetos com sucesso. </p>
<p><a title="Download JAR" href="http://www.nextframework.org/download/nightlybuilds/next-3.5.1-build20110420.jar">Download JAR</a> next-3.5.1-build20110420.jar     <br /><a title="Download JAR" href="http://www.nextframework.org/download/nightlybuilds/next-3.5.1-build-20110420-src.zip">Download Source</a> next-3.5.1-build-20110420-src.zip    <br /><a title="Abrir Release Notes" href="http://www.nextframework.org/download/nightlybuilds/releaseNotes-20110420.txt" target="_blank">Release Notes</a></p>
<p>Essa versão não foi disponibilizada na seção de downloads pois é um nightly build.    <br />Será necessário fazer o download do arquivo 3.5.1-Full na <a href="http://www.nextframework.org/site/downloads">seção de downloads</a>.     <br />Para utilizar essa versão substitua o JAR do Next, pelo JAR dessa versão.     <br /><em><font size="1">(Se ao fazer o download, a extensão do arquivo vier como .zip, basta renomear para .jar)</font></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/391/geral/3-5-1-build-20110420/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Novo Tutorial Dispon&#237;vel</title>
		<link>http://www.nextframework.org/site/389/geral/novo-tutorial-disponvel</link>
		<comments>http://www.nextframework.org/site/389/geral/novo-tutorial-disponvel#comments</comments>
		<pubDate>Tue, 19 Oct 2010 20:59:10 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/389/geral/novo-tutorial-disponvel</guid>
		<description><![CDATA[Um novo tutorial sobre AJAX está disponível na área de Tutoriais. AJAX utilizando a tag a:call
]]></description>
			<content:encoded><![CDATA[<p>Um novo tutorial sobre AJAX está disponível na área de Tutoriais. <a href="http://www.nextframework.org/site/386/geral/ajax-utilizando-a-tag-acall?nosidebar=true">AJAX utilizando a tag a:call</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/389/geral/novo-tutorial-disponvel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AJAX utilizando a tag a:call</title>
		<link>http://www.nextframework.org/site/386/geral/ajax-utilizando-a-tag-acall</link>
		<comments>http://www.nextframework.org/site/386/geral/ajax-utilizando-a-tag-acall#comments</comments>
		<pubDate>Tue, 19 Oct 2010 20:53:48 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/386/geral/ajax-utilizando-a-tag-acall</guid>
		<description><![CDATA[Esse é um tutorial que demonstra algumas utilizações para a tag a:call do next. A tag a:call é uma tag que monta as funções javascript necessárias para se fazer chamadas AJAX. 
Chamadas AJAX são basicamente invocações de métodos no servidor de forma assincrona, onde é possível atualizar partes da página atual ou executar operações no [...]]]></description>
			<content:encoded><![CDATA[<p>Esse é um tutorial que demonstra algumas utilizações para a tag <font face="Courier New">a:call</font> do next. A tag <font face="Courier New">a:call</font> é uma tag que monta as funções javascript necessárias para se fazer chamadas AJAX. </p>
<blockquote><p><font style="background-color: #ffffff">Chamadas AJAX são basicamente invocações de métodos no servidor de forma assincrona, onde é possível atualizar partes da página atual ou executar operações no servidor sem a necessidadde de recarregar a página inteira. Isso economiza recursos tanto do servidor quanto do cliente, possibilitando aplicações mais ricas e ao mesmo tempo mais eficientes. É um recurso muito utilizado e dá bastante vida as páginas.</font></p>
</blockquote>
<p>Para utilizar a tag <font face="Courier New">a:call</font> do next, é necessário que seu módulo utilize o arquivo base.jsp. Veja a documentação de referência para mais informações sobre o base.jsp. Capítulo 6 – MVC.</p>
<p>O primeiro passo para utilizar a tag, é importar a tag lib de ajax. Para isso, adicione no seu JSP o seguinte import.</p>
<p><font face="Courier New"><strong>&lt;%@ taglib prefix</strong>=&quot;a&quot; <strong>uri</strong>=&quot;ajax&quot;<strong>%&gt;</strong></font></p>
<p>A taglib ajax possui apenas uma tag <font color="#008000" face="Courier New"><strong>call</strong></font>. Dois atributos dessa tag são obrigatórios: <strong><font color="#800080" face="Courier New"></font></strong></p>
<ul>
<li><strong><font color="#800080" face="Courier New">functionName</font></strong>, que é o nome da função javascript que será gerada, e que poderá ser invocada pelos seus scripts. </li>
<li><strong><font color="#800080" face="Courier New">action</font></strong>, que é o nome da action no controller que irá receber a chamada.</li>
</ul>
<p>A tag <font color="#008000" face="Courier New"><strong>call</strong></font> possui outros 3 atributos, que são opcionais.     </p>
<ul>
<li><strong><font color="#800080" face="Courier New">callback</font></strong>, que é o nome da função javascript que irá receber a resposta do servidor. Se desejar você pode escrever uma função personalizada para tratar os dados recebidos. A função de callback padrão faz um <font face="Courier New">eval </font>do conteúdo retornado.</li>
<li><strong><font color="#800080" face="Courier New">parameters</font></strong>, que é a lista de parametros a ser passada para o servidor. Os parâmetros devem ser especificados na sintaxe de URL, ex: param1=value1&amp;param2=value2.</li>
<li><strong><font color="#800080" face="Courier New">url</font></strong>, que é a url do controller para onde a chamada deve ser enviada. Se não for informado o controller chamado será o mesmo que recebeu a requisição que renderizou a página.</li>
</ul>
<ul>A seguir serão apresentados alguns exemplos de utilização da tag. A versão utilizada para testes dos exemplos é a 3.5.1.</ul>
<ul></ul>
<h3>Exemplo 1 – Básico</h3>
<p>&#160;</p>
<p>Nesse exemplo será mostrada a chamada mais simples de chama AJAX. Será renderizado um botão que ao ser clicado envia uma requisição ao servidor, que devolve um comando alert para o browser. </p>
<h4>Controller</h4>
<p><font face="Courier New"><strong>package</strong> controller; </font></p>
<p><font face="Courier New"><strong>import</strong> org.nextframework.controller.Controller;      <br /><strong>import</strong> org.nextframework.controller.DefaultAction;      <br /><strong>import</strong> org.nextframework.controller.MultiActionController;      <br /><strong>import</strong> org.nextframework.view.ajax.View; </font></p>
<p><font face="Courier New">@Controller(path=&quot;/modulo/ajax&quot;)     <br /><strong>public class</strong> AjaxController <strong>extends</strong> MultiActionController{ </font></p>
<p><font face="Courier New">&#160;&#160;&#160; /**     <br />&#160;&#160;&#160;&#160; * Action default.      <br />&#160;&#160;&#160;&#160; * Será chamada pelo browser diretamente para renderizar a página      <br />&#160;&#160;&#160;&#160; * @return      <br />&#160;&#160;&#160;&#160; */      <br />&#160;&#160;&#160; @DefaultAction      <br />&#160;&#160;&#160; <strong>public</strong> String pagina(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>return</strong> &quot;pagina&quot;;      <br />&#160;&#160;&#160; }      <br /></font></p>
<p><font face="Courier New">&#160;&#160;&#160; <strong>public void</strong> actionAjax(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; /*      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; * A classe View possui alguns métodos para facilitar o envio de informações para o cliente.      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; * Basicamente cada comando representa um print na saída do response.      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; */      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; View.getCurrent().alert(&quot;Conteúdo AJAX enviado pelo servidor&quot;);      <br />&#160;&#160;&#160; }      <br />}</font></p>
<h4>&#160;</h4>
<h4>JSP (pagina.jsp)</h4>
<p>&lt;%@ taglib prefix=&quot;a&quot; uri=&quot;ajax&quot;%&gt; </p>
<p>Essa é a página que utilizará AJAX. </p>
<p>&lt;button onclick=&quot;chamarAjax()&quot;&gt;Clique para efetuar o AJAX&lt;/button&gt; </p>
<p>&lt;a:call functionName=&quot;chamarAjax&quot; action=&quot;actionAjax&quot; /&gt;</p>
<h3>&#160;</h3>
<h3>Exemplo 2 – Alterando o conteúdo do HTML</h3>
<p>&#160;</p>
<p>No segundo exemplo iremos alterar o conteúdo de um DIV, com o conteúdo enviado pelo servidor. </p>
<h4>Controller</h4>
<p><font face="Courier New"><strong>package</strong> controller; </font></p>
<p><font face="Courier New"><strong>import</strong> org.nextframework.controller.Controller;      <br /><strong>import</strong> org.nextframework.controller.DefaultAction;      <br /><strong>import</strong> org.nextframework.controller.MultiActionController;      <br /><strong>import</strong> org.nextframework.view.ajax.View; </font></p>
<p><font face="Courier New">@Controller(path=&quot;/modulo/ajax&quot;)     <br /><strong>public class</strong> AjaxController <strong>extends</strong> MultiActionController{ </font></p>
<p><font face="Courier New">&#160;&#160;&#160; /**     <br />&#160;&#160;&#160;&#160; * Action default.      <br />&#160;&#160;&#160;&#160; * Será chamada pelo browser diretamente para renderizar a página      <br />&#160;&#160;&#160;&#160; * @return      <br />&#160;&#160;&#160;&#160; */      <br />&#160;&#160;&#160; @DefaultAction      <br />&#160;&#160;&#160; <strong>public</strong> String pagina(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>return</strong> &quot;pagina&quot;;      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; <strong>public void</strong> actionAjax(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //o eval só funcionará se a função callback do cliente for       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //a função default (ou seja, callback não especificado)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; View      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .getCurrent()      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;conteudo&#8217;).innerHTML = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;Novo conteúdo enviado pelo servidor&#8217;;&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;conteudo&#8217;).style.backgroundColor = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;#DEDE55&#8242;;&quot;); //é possível enviar vários comandos      <br />&#160;&#160;&#160; }      <br />}</font></p>
<p>&#160;</p>
<h4>JSP (pagina.jsp)</h4>
<p><font face="Courier New">&lt;%@ taglib prefix=&quot;a&quot; uri=&quot;ajax&quot;%&gt; </font></p>
<p><font face="Courier New">Essa é a página que utilizará AJAX. </font></p>
<p><font face="Courier New">&lt;div id=&quot;conteudo&quot; style=&quot;border:1px solid red&quot;&gt;     <br /> Conteúdo que será alterado      <br />&lt;/div&gt; </font></p>
<p><font face="Courier New">&lt;button onclick=&quot;chamarAjax()&quot;&gt;Clique para efetuar o AJAX&lt;/button&gt; </font></p>
<p><font face="Courier New">&lt;a:call functionName=&quot;chamarAjax&quot; action=&quot;actionAjax&quot; /&gt;</font></p>
<p>&#160;</p>
<h3>Exemplo 3 – Enviando parâmetros para o servidor</h3>
<p>&#160;</p>
<p>Nesse exemplo é mostrado como é possível passar parâmetros para o servidor.</p>
<h4>Controller</h4>
<p><font face="Courier New"><strong>package</strong> controller; </font></p>
<p><font face="Courier New"><strong>import</strong> org.nextframework.controller.Controller;      <br /><strong>import</strong> org.nextframework.controller.DefaultAction;      <br /><strong>import</strong> org.nextframework.controller.MultiActionController;      <br /><strong>import</strong> org.nextframework.view.ajax.View; </font></p>
<p><font face="Courier New">@Controller(path=&quot;/modulo/ajax&quot;)     <br /><strong>public class</strong> AjaxController <strong>extends</strong> MultiActionController{ </font></p>
<p><font face="Courier New">&#160;&#160;&#160; @DefaultAction     <br />&#160;&#160;&#160; <strong>public</strong> String pagina(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; <strong>return</strong> &quot;pagina&quot;;      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; <strong>public void</strong> actionAjax(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //pegamos o parametro enviado pelo cliente para montar a resposta      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; String id = getParameter(&quot;id&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; View      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .getCurrent()      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;&quot;+id+&quot;&#8217;).innerHTML = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;Novo conteúdo enviado pelo servidor&#8217;;&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;&quot;+id+&quot;&#8217;).style.backgroundColor = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;#DEDE55&#8242;;&quot;); //é possível enviar vários comandos      <br />&#160;&#160;&#160; }      <br />}</font></p>
<h4>JSP (pagina.jsp)</h4>
<p><font face="Courier New">&lt;%@ taglib prefix=&quot;a&quot; uri=&quot;ajax&quot;%&gt; </font></p>
<p><font face="Courier New">Essa é a página que utilizará AJAX. </font></p>
<p><font face="Courier New">&lt;div id=&quot;conteudo&quot; style=&quot;border:1px solid red&quot;&gt;     <br /> Conteúdo que será alterado      <br />&lt;/div&gt; </font></p>
<p><font face="Courier New">&lt;button onclick=&quot;chamarAjax()&quot;&gt;Clique para efetuar o AJAX&lt;/button&gt; </font></p>
<p><font face="Courier New">&lt;a:call functionName=&quot;chamarAjax&quot; action=&quot;actionAjax&quot; parameters=&quot;id=conteudo&quot;/&gt;</font></p>
<h3>&#160;</h3>
<h3>Exemplo 4 – Parâmetros Dinâmicos</h3>
<p>&#160;</p>
<p>É também possível montar os parâmetros dinamicamente via código javascript, para isso utilizaremos uma construção especial no atributo parameters. Antes de clicar no botão para chamar o AJAX preencha no input o valor 1, 2 ou 3.</p>
<p>&#160;</p>
<h4>Controller</h4>
<p><font face="Courier New"><strong>package</strong> controller; </font></p>
<p><font face="Courier New"><strong>import</strong> org.nextframework.controller.Controller;      <br /><strong>import</strong> org.nextframework.controller.DefaultAction;      <br /><strong>import</strong> org.nextframework.controller.MultiActionController;      <br /><strong>import</strong> org.nextframework.view.ajax.View; </font></p>
<p><font face="Courier New">@Controller(path=&quot;/modulo/ajax&quot;)     <br /><strong>public class</strong> AjaxController <strong>extends</strong> MultiActionController{ </font></p>
<p><font face="Courier New">&#160;&#160;&#160; @DefaultAction     <br />&#160;&#160;&#160; <strong>public</strong> String pagina(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; return &quot;pagina&quot;;      <br />&#160;&#160;&#160; }      <br />&#160;&#160;&#160; <strong>public void</strong> actionAjax(){      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; //pegamos o parametro enviado pelo cliente para montar a resposta      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; String id = getParameter(&quot;id&quot;);      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; View      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .getCurrent()      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;&quot;+id+&quot;&#8217;).innerHTML = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;Novo conteúdo enviado pelo servidor&#8217;;&quot;)      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .eval(&quot;document.getElementById(&#8217;&quot;+id+&quot;&#8217;).style.backgroundColor = &quot; +      <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;&#8217;#DEDE55&#8242;;&quot;); //é possível enviar vários comandos      <br />&#160;&#160;&#160; }      <br />}</font></p>
<p>&#160;</p>
<h4>JSP (pagina.jsp)</h4>
<p><font face="Courier New">&lt;%@ taglib prefix=&quot;a&quot; uri=&quot;ajax&quot;%&gt;     <br />&lt;%@ taglib prefix=&quot;n&quot; uri=&quot;next&quot;%&gt; </font></p>
<p><font face="Courier New">Essa é a página que utilizará AJAX. </font></p>
<p><font face="Courier New">&lt;div id=&quot;conteudo1&quot; style=&quot;border:1px solid red;&quot;&gt;     <br /> Conteúdo que será alterado 1      <br />&lt;/div&gt;      <br />&lt;div id=&quot;conteudo2&quot; style=&quot;border:1px solid green;&quot;&gt;      <br /> Conteúdo que será alterado 2      <br />&lt;/div&gt;      <br />&lt;div id=&quot;conteudo3&quot; style=&quot;border:1px solid blue;&quot;&gt;      <br /> Conteúdo que será alterado 3      <br />&lt;/div&gt; </font></p>
<p><font face="Courier New">Digite qual conteúdo deseja alterar (1, 2 ou 3): &lt;n:input type=&quot;integer&quot; value=&quot;1&quot; id=&quot;numero&quot;/&gt; </font></p>
<p><font face="Courier New">&lt;button onclick=&quot;chamarAjax()&quot;&gt;Clique para efetuar o AJAX&lt;/button&gt; </font></p>
<p><font face="Courier New">&lt;a:call functionName=&quot;chamarAjax&quot; action=&quot;actionAjax&quot; parameters=&quot;javascript:&#8217;id=conteudo&#8217;+document.getElementById(&#8217;numero&#8217;).value&quot;/&gt;</font></p>
<p>Também é possível alterar a montagem dos parametros para delegar a uma função javascript, conforme exemplo:</p>
<p><font face="Courier New">&lt;a:call functionName=&quot;chamarAjax&quot; action=&quot;actionAjax&quot; parameters=&quot;javascript:montarParametros()&quot;/&gt; </font></p>
<p><font face="Courier New">&lt;script type=&quot;text/javascript&quot;&gt;     <br />function montarParametros(){      <br />&#160;&#160;&#160; return &#8216;id=conteudo&#8217; +&#160; document.getElementById(&#8217;numero&#8217;).value;      <br />}      <br />&lt;/script&gt;</font></p>
<p>&#160;</p>
<p>Como visto nos exemplos a chamada ajax no servidor é feita de forma bem simples. Basicamente a tag a:call monta a função javascript e você apenas chama na sua página onde for necessário. No servidor a classe View, possui alguns métodos utilitários para escrever no response. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/386/geral/ajax-utilizando-a-tag-acall/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurar Log para o servidor Tomcat</title>
		<link>http://www.nextframework.org/site/376/geral/configurar-log-para-o-servidor-tomcat</link>
		<comments>http://www.nextframework.org/site/376/geral/configurar-log-para-o-servidor-tomcat#comments</comments>
		<pubDate>Fri, 30 Jul 2010 18:59:35 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/376/geral/configurar-log-para-o-servidor-tomcat</guid>
		<description><![CDATA[O servidor Tomcat, por padrão não vem com o sistema de log bem configurado. Se acontece uma exceção no sistema por exemplo, ela não é mostrada. Quando estiver utilizando o Next e como servidor o Tomcat, você poderá fazer a configuração do log através do arquivo log4j.properties esse arquivo deve ficar na raiz dos seus [...]]]></description>
			<content:encoded><![CDATA[<p>O servidor Tomcat, por padrão não vem com o sistema de log bem configurado. Se acontece uma exceção no sistema por exemplo, ela não é mostrada. Quando estiver utilizando o Next e como servidor o Tomcat, você poderá fazer a configuração do log através do arquivo <strong>log4j.properties</strong> esse arquivo deve ficar na raiz dos seus fontes (pasta src). Você pode usar como conteúdo desse arquivo o código abaixo, que mostrará mensagens importantes no log.    </p>
<p><font face="Courier New"><font color="#008000"># Set root category priority to INFO and its only appender to CONSOLE.</font>       <br />log4j.rootCategory=INFO, CONSOLE </font></p>
<p><font face="Courier New"><font color="#008000"># Set the hbm2ddl logger category to FATAL and its only appender to CONSOLE.</font>       <br />log4j.logger.org.hibernate.tool.hbm2ddl=FATAL, CONSOLE </font></p>
<p><font face="Courier New"><font color="#008000"># CONSOLE is set to be a ConsoleAppender using a PatternLayout.        <br /></font>log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender       <br />log4j.appender.CONSOLE.Threshold=INFO       <br />log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout       <br />log4j.appender.CONSOLE.layout.ConversionPattern=%-4p: %c{1} %m%n</font></p>
<p>&#160; <br />&#160; <br /> <br />
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/376/geral/configurar-log-para-o-servidor-tomcat/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next Framework est&#225; na revista Mundo Java</title>
		<link>http://www.nextframework.org/site/371/geral/next-framework-est-na-revista-mundo-java</link>
		<comments>http://www.nextframework.org/site/371/geral/next-framework-est-na-revista-mundo-java#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:25:57 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/371/geral/next-framework-est-na-revista-mundo-java</guid>
		<description><![CDATA[
A maior revista sobre Java do país, que agora se chama MundoJ, está na edição 42 com um artigo sobre o Next Framework. O artigo está em formato de tutorial, bastante detalhado, sobre como criar uma aplicação do tipo Blog. Abrange vários assuntos, desde a criação de CRUDs, validação até upload de arquivos.
Parabéns e obrigado [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.nextframework.org/site/wp-content/uploads/2010/07/ed421.jpg"><img style="border-bottom: 0px; border-left: 0px; margin: 0px 15px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="Edição 42 MundoJ" src="http://www.nextframework.org/site/wp-content/uploads/2010/07/ed42_thumb1.jpg" border="0" alt="Edição 42 MundoJ" width="104" height="136" align="left" /></a></p>
<p>A maior revista sobre Java do país, que agora se chama MundoJ, está na edição 42 com um artigo sobre o Next Framework. O artigo está em formato de tutorial, bastante detalhado, sobre como criar uma aplicação do tipo Blog. Abrange vários assuntos, desde a criação de CRUDs, validação até upload de arquivos.</p>
<p>Parabéns e obrigado a todos os usuários do Next Framework que possibilitam o crescimento e a qualidade da ferramenta.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/371/geral/next-framework-est-na-revista-mundo-java/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Documenta&#231;&#227;o atualizada</title>
		<link>http://www.nextframework.org/site/367/geral/documentao-atualizada</link>
		<comments>http://www.nextframework.org/site/367/geral/documentao-atualizada#comments</comments>
		<pubDate>Fri, 09 Jul 2010 14:58:23 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/367/geral/documentao-atualizada</guid>
		<description><![CDATA[A documentação do Next Framework foi atualizada para refletir as mudanças da versão 3.5.1 do framework. Basta acessar a seção de documentação do site.
]]></description>
			<content:encoded><![CDATA[<p>A documentação do Next Framework foi atualizada para refletir as mudanças da versão 3.5.1 do framework. Basta acessar a seção de documentação do site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/367/geral/documentao-atualizada/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vers&#227;o 3.5.1</title>
		<link>http://www.nextframework.org/site/361/geral/verso-3-5-1</link>
		<comments>http://www.nextframework.org/site/361/geral/verso-3-5-1#comments</comments>
		<pubDate>Thu, 20 May 2010 19:58:58 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Geral]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/361/geral/verso-3-5-1</guid>
		<description><![CDATA[Liberada mais uma versão do framework no dia 19/05/2010. Veja o release notes da versão para saber quais foram as atualizações. Em breve a documentação será atualizada para refletir as mudanças. As principais evoluções dessa versão são:
 
Possibilidade de usar a configuração simplificada de banco de dados (via connection.properties) para todos os bancos que o [...]]]></description>
			<content:encoded><![CDATA[<p>Liberada mais uma versão do framework no dia 19/05/2010. Veja o <a href="http://www.nextframework.org/download/releaseNotes.txt">release notes</a> da versão para saber quais foram as atualizações. Em breve a documentação será atualizada para refletir as mudanças. As principais evoluções dessa versão são:</p>
<p> <span id="more-361"></span>
<p>Possibilidade de usar a configuração simplificada de banco de dados (via connection.properties) para todos os bancos que o Hibernate suporta. </p>
<p>Possibilidade de configurar o dialeto do banco através do arquivo hibernate.properties.</p>
<p>Simplificação das actions do MultiActionController.</p>
<p>Action até a versão 3.5.0:</p>
<div style="padding-left: 26px; font-family: courrier new, verdana; font-size: 11px">
<p>public ModelAndView minhaAction(WebRequestContext request, Filter filter){      <br />&#160;&#160;&#160;&#160; if(request.getParameter(“someParam”) == null){       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; request.setAttribute(“myAttr”, true);       <br />&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160; return ModelAndView(“myPage”);       <br />}</p>
</p></div>
<p>Action a partir da versão 3.5.1:</p>
<div style="padding-left: 26px; font-family: courrier new, verdana; font-size: 11px">
<p>public String minhaAction(Filter filter){      <br />&#160;&#160;&#160;&#160; if(getParameter(“someParam”) == null){       <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; setAttribute(“myAttr”, true);       <br />&#160;&#160;&#160;&#160; }       <br />&#160;&#160;&#160;&#160; return “myPage”;       <br />}</p>
</p></div>
<p>A forma antiga continua funcionando, não será necessário atualizar os seus controllers ao migrar a versão. </p>
<p>Vários bugs corrigidos e algumas melhorias.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/361/geral/verso-3-5-1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Next &#8211; A motiva&#231;&#227;o para um novo framework</title>
		<link>http://www.nextframework.org/site/355/artigo/next-a-motivao-para-um-novo-framework</link>
		<comments>http://www.nextframework.org/site/355/artigo/next-a-motivao-para-um-novo-framework#comments</comments>
		<pubDate>Thu, 04 Mar 2010 15:34:16 +0000</pubDate>
		<dc:creator>Rógel Garcia</dc:creator>
				<category><![CDATA[Artigo]]></category>
		<category><![CDATA[arquitetura]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[Hibernate]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jee]]></category>
		<category><![CDATA[next]]></category>
		<category><![CDATA[problema]]></category>
		<category><![CDATA[solução]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.nextframework.org/site/355/artigo/next-a-motivao-para-um-novo-framework</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160; No desenvolvimento de aplicações JEE, geralmente temos basicamente os seguintes artefatos: um banco de dados, classes e arquivos de templates que são os JSPs. Os banco de dados são relacionais, diferente da natureza orientada a objetos das classes que dispomos. Temos então o primeiro problema: fazer a comunicação entre os objetos e o banco [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">&#160;&#160;&#160;&#160; No desenvolvimento de aplicações JEE, geralmente temos basicamente os seguintes artefatos: um banco de dados, classes e arquivos de templates que são os JSPs. Os banco de dados são relacionais, diferente da natureza orientada a objetos das classes que dispomos. Temos então o primeiro problema: fazer a comunicação entre os objetos e o banco de dados relacional. As classes em tempo de execução são objetos que dependem e interagem entre si. Aí está o segundo problema: satisfazer a dependência entre os objetos para poderem interagir. É justamente nesse tipo de problema, que não é o problema da regra de negócio da aplicação, que podemos utilizar frameworks para facilitar o trabalho.</p>
<p><span id="more-355"></span>
<p align="justify">&#160;&#160;&#160;&#160; Para resolver o problema do mapeamento objeto/relacional temos como exemplo o Hibernate. Para resolver o problema da dependência entre os objetos podemos utilizar o Spring. Além desses problemas que surgiram apenas por necessidades arquiteturais de um sistema, no ambiente web também temos os problemas de comunicação entre cliente e servidor. Onde informações devem ser trocadas por um meio onde apenas Strings são transferidas, que é o protocolo HTTP. O próprio Spring tem um modelo MVC para ajudar a solucionar esse problema.</p>
<p align="justify">&#160;&#160;&#160;&#160; Com esses dois frameworks, Hibernate e Spring, podemos então solucionar grande parte dos problemas estruturais de uma aplicação. Conseguimos desenvolver em um nível mais alto, já que os problemas mais básicos estão resolvidos. Nesse nível mais alto temos agora, que integrar os dois frameworks. O Spring possui classes já preparadas para a integração com o Hibernate. Mas mesmo utilizando os recursos mais automatizados do Spring, ainda será necessário a utilização de um XML para configurar DataSources, HibernateTemplates, TransactionTemplates, etc. A mesma coisa acontece com o Spring MVC, será necessário configurar qual engine de templates utilizar, como serão resolvidas as URLs e com isso mais um XML será criado.</p>
<p align="justify">&#160;&#160;&#160;&#160; Se pensarmos que a única informação realmente relevante para o Hibernate e toda a configuração de persistencia do Spring são o caminho para o banco de dados e quais são as classes que serão mapeadas, ainda temos muito trabalho configurando informações que praticamente não mudam. Ou seja, as classes que serão mapeadas serão as que tiverem a anotação @Entity e o dataSource, hibernateTemplate, transactionTemplate serão configurados de acordo com o caminho banco de dados. Com base nisso as informações realmente relevantes são url, driver, usuário e senha do banco de dados. Para que tanto XML e configuração sendo que tudo é baseado apenas no caminho do banco de dados? No caso do Hibernate por exemplo, porque sempre temos que informar o dialeto sendo que o dialeto já é especifico para cada SGBD? Acho que ninguém usa um dialeto do PostgreSQL em um banco MySQL. Ainda podemos eliminar trabalho na área de persistencia.</p>
<p align="justify">&#160;&#160;&#160;&#160; Vamos pensar agora na camada de visão da aplicação, considerando que o usuário do sistema o utilizará através de um browser lendo HTML e conversando HTTP. A base que temos é: um servlet receberá os parâmetros e deverá montar alguma resposta com base na requisição. Utilizando o Spring MVC, elevamos essa base para algo mais interessante, com a possibilidade de mapear os parâmetros recebidos em objetos e redirecionar a requisição para um template que irá montar a resposta. A camada de controle, deve estar alinhada com a camada de visão pois o que a visão renderizar será a causa de uma nova requisição, logo os parâmetros dessa nova requisição devem condizer com que o controle espera. Quando desenvolvemos aplicações JEE a camada de visão é quase sempre JSP. O Spring MVC possui algumas tags para facilitar a montagem dessa resposta no JSP de acordo com que o controle espera. Mas essas tags não são completas.</p>
<p align="justify">&#160;&#160;&#160;&#160; Quando vamos montar um HTML temos alguns problemas básicos a enfrentar. O primeiro é que precisamos navegar em objetos e seus atributos para recuperar o modelo que será utilizado na renderização. Ou seja, precisamos recuperar o valor do atributo <em>nome</em> do objeto que está no escopo de requisição com o nome <em>pessoa</em>.</p>
<p align="justify">&#160;&#160;&#160;&#160; Depois que navegamos nos objetos disponíveis e escolhemos os atributos a serem mostrados, temos que escolher se mostramos esse valor como output, ou seja, apenas para leitura do usuário. Ou, como input, o usuário irá preencher esse valor, que deve ser lido pelo controle posteriormente. Nesse caso já vemos que o controle deve estar alinhado com a camada de visão.</p>
<p align="justify">&#160;&#160;&#160;&#160; As informações mostradas no HTML não podem ficar soltas, precisamos de algumas tags como DIVs ou TABLEs para organizar o conteúdo na página.</p>
<p align="justify">&#160;&#160;&#160;&#160; E finalmente precisamos ter algum meio de navegação, onde podemos criar formas de o usuário acessar as várias funcionalidades de um sistema.</p>
<p align="justify">&#160;&#160;&#160;&#160; De todos esses problemas que estão presentes na montagem de um JSP, o único que as tags do Spring implementa de forma que auxilia o desenvolvedor é a navegação entre os objetos. No ambito de escolher entre input, output, organizar as informações no HTML e ainda dar estilo, o Spring MVC não consegue auxiliar tanto. Por isso o Spring MVC não é tão produtivo para a camada MVC da sua aplicação. Mas ainda assim é melhor que um servlet puro.</p>
<p align="justify">&#160;&#160;&#160;&#160; Com base nesses problemas levantados, vemos que ainda restam várias brechas que os frameworks de mercado não resolvem, e talvez nem esteja no escopo deles resolver. É justamente nessas brechas que o Framework Next atua. Os problemas citados nesse artigo são resolvidos pelo Next de forma que o desenvolvedor não precise se preocupar com eles. Para configurar o Next com o Hibernate, e todos os objetos do Spring que dão suporte ao Hibernate por exemplo, basta um arquivo connection.properties que contém apenas a url, driver, usuário e senha do banco de dados. Todas as outras configurações são feitas pelo Next, você só precisará modificá-las caso necessite. Na camada de visão o Next tem um grupo de tags para trabalhar com cada um dos problemas citados. Como os problemas estão separados em cada grupo, um número pequeno de tags consegue resolver a maior parte dos problemas. O Next também melhora a camada de controle com mais suporte e integração com a camada de visão. E outras situações que não falamos aqui, como autorização e autenticação, upload de arquivos, AJAX, relatórios e casos de uso que são padrão como CRUDs também são tratados pelo Next.</p>
<p align="justify">&#160;&#160;&#160;&#160; Vemos que o Next não tenta reinventar a roda, ele utiliza ao máximo os frameworks de suporte e vai além, provendo uma plataforma de mais alto nível para dar mais produtividade ao desenvolvimento de aplicações JEE.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nextframework.org/site/355/artigo/next-a-motivao-para-um-novo-framework/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

