Next 3.8 - Como migrar

Não deixe de perguntar, solucione aqui suas dúvidas...

Next 3.8 - Como migrar

Mensagempor rogelgarcia » Qui Jun 25, 2015 3:31 pm

A versão 3.8 do Next, contém várias alterações de API atualizadas para o idioma inglês.
Com isso, ao atualizar o Next para essa versão, será necessária uma atualização do código.
Se houver dúvidas, basta perguntar.

> Foi criado um logger "org.nextframework.deprecated" que emitirá alertas sobre uso de APIs depreciadas.

> ACAO

O parâmetro ACAO que indica qual método deve ser chamado no controller, agora é ACTION.
Ainda irá funcionar o parâmetro ACAO, porém, ele está depreciado. O Next emitirá um alerta.

> Classes, métodos e atributos renomeados:

Código: Selecionar tudo
User.login -> User.username
Hora -> SimpleTime
Telefone -> Phone
CrudControler.listagemVaziaPrimeiraVez -> listEmptyOnFirstRequest

Atenção: O atributo login da interface User foi renomeado para username. Pesquise todas as ocorrencias no sistema, pois pode estar representada por Strings.

> CRUD

É recomendado que se dê uma lida na classe CrudController para ficar familiarizado com as atualizações.

Todas as actions do Crud foram renomeadas. Todos os métodos e atributos respectivos tiveram os nomes atualizados.
Código: Selecionar tudo
Listagem -> List
Lista -> List
Consulta -> View
Entrada -> Form
Editar -> Update
Criar -> Create
Excluir -> Delete


O CrudController disponibilizava informações para a página através de atributos no padrão TEMPLATE_*. Todos esses atributos foram removidos. Agora existe um objeto que encapsula todas essas informações da classe CrudContext. Também havia um atributo lista e filtro, que continuam funcionando porém depreciados.

> JSPs de CRUD

Os padrões de nomes de JSPs de Crud foram atualizados. De Listagem para List e de Entrada para Form. Então, todos os JSPs devem ser renomeados.

> Taglib

Foram criadas duas novas taglibs com sufixo n e t. Elas estão nas URIs http://www.nextframework.org/tag-lib/next e http://www.nextframework.org/tag-lib/template repectivamente. As antigas continuam funcionando.

Para usar as novas taglibs, basta atualizar o seu JSP.
Modo antigo:
Código: Selecionar tudo
<%@ taglib prefix="n" uri="next"%>
<%@ taglib prefix="t" uri="template"%>


Modo novo:
Código: Selecionar tudo
<%@ taglib prefix="n" uri="http://www.nextframework.org/tag-lib/next"%>
<%@ taglib prefix="t" uri="http://www.nextframework.org/tag-lib/template"%>



IMPORTANTE: Se estiver sobrescrevendo templates na sua aplicação (por exemplo, se tem um ListagemTag.jsp), eles devem ser renomeados. Todas as tags agora estão com nomes em inglês. O seu arquivo ListagemTag.jsp deve ser renomeado para ListViewTag.jsp, caso contrário não será lido.

Nomes das tags atualizados (apenas t: foi atualizado):
Código: Selecionar tudo
ListagemTag -> ListViewTag
EntradaTag -> FormViewTag
TelaTag -> ViewTag
JanelaFiltroTag -> FilterPanelTag
JanelaEntradaTag -> FormPanelTag
JanelaRelatorioTag -> ReportPanelTag
JanelaResultadosTag -> ListPanelTag
TabelaResultadosTag -> ListTableTag
AcaoTag -> ActionPanelTag
TabelaFiltroTag -> FilterTableTag
TabelaEntradaTag -> FormTableTag
TabelaRelatorio -> ReportTableTag
DetalheTag -> DetailTag


Se estiver usando a taglib antiga, não será necessário atualizar seus JSPs, exemplo:
Código: Selecionar tudo
<%@ taglib prefix="t" uri="template"%>

<t:listagem>
   <t:janelaResultados>
      <t:tabelaResultados showConsultarLink="true">
         <t:property name="id"/>
         <t:property name="nome"/>
         <t:property name="dataNascimento"/>
      </t:tabelaResultados>
   </t:janelaResultados>
</t:listagem>


Se estiver usando a nova taglib, deve atualizar seus JSPs:
Código: Selecionar tudo
<%@ taglib prefix="t" uri="http://www.nextframework.org/tag-lib/template"%>

<t:listView>
   <t:listPanel>
      <t:listTable>
         <t:property name="id"/>
         <t:property name="nome"/>
         <t:property name="dataNascimento"/>
      </t:listTable>
   </t:listPanel>
</t:listView>


Lembrando que os nomes dos templates são sempre em inglês. Então, se tem um arquivo ListagemTag.jsp na sua aplicação, ele deve ser renomeado para ListViewTag.jsp. JanelaFiltroTag.jsp deve ser renomeado para FilterPanelTag.jsp e assim por diante.

> DAO

Os métodos no GenericDAO também foram renomeados.
Código: Selecionar tudo
findForListagem -> loadListModel
loadForEntrada -> loadFormModel
updateListagemQuery -> updateListQuery
updateEntradaQuery -> updateFormQuery


> CSS

A tag head (utilizada no base.jsp) agora inclui dois novos CSSs normalize.css e system.css.
Dependendo de como estiver configurado seu layout pode ser necessário remover esses dois csss. Utilize os atributos includeNomilizeCss e includeSystemCss para configuração. Por padrão o valor dos dois atributos é true.
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Re: Next 3.8 - Como migrar

Mensagempor Marcos V Castro » Seg Ago 17, 2015 8:42 am

Bom dia Rogel,
Estou migrando uma aplicação do next 3.7 para 3.8 e achei um detalhe.
Na classe ListTable.jsp existe a seguinte linha:
Código: Selecionar tudo
<n:getContent tagName="acaoTag" vars="acoes">


Mas com a migração acho você alterou a tagName de acaoTag para ActionPanelTag, tanto na template.tld quanto template-legacy.tld. Enfim, quando fiz a alteração citada acima para actionPanelTag, funcionou certinho.
Código: Selecionar tudo
<n:getContent tagName="actionPanelTag" vars="acoes">
Marcos V Castro
 
Mensagens: 2
Data de registro: Sex Ago 14, 2015 6:02 pm

Re: Next 3.8 - Como migrar

Mensagempor rogelgarcia » Seg Ago 17, 2015 10:24 am

Olá Marcos, perfeita sua observação.

Já vou corrigir esse bug.

Muito obrigado

Até mais

Rógel
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Re: Next 3.8 - Como migrar

Mensagempor Marcos V Castro » Seg Ago 17, 2015 2:45 pm

Boa tarde Rogel,

Achei uma outra falha na ordenação nas telas de listagens, ao clicar no titulo da coluna não está ordenando. Tive olhando o código e encontrei o caminho que pode te ajudar. Na classe PropertTag.java existe a seguinte linha:
Código: Selecionar tudo
if(findParent2(DetailTag.class, false) == null && getRequest().getAttribute("TEMPLATE_listagem") != null && order == null){


Na parte "getRequest().getAttribute("TEMPLATE_listagem")" está tentando pegar um valor, mas este não esta sendo atribuído (setado) em lugar algum, pois na classe CrudContext esta comentado o trecho onde "setava" o atributo.
Código: Selecionar tudo
request.setAttribute("TEMPLATE_listagem", "true");


Como mudou a forma de trabalhar com estes atributos. Para corrigir provisoriamente implementei o seguinte (não sei se foi o correto mas funcionou):

Código: Selecionar tudo
if (findParent2(DetailTag.class, false) == null && order == null) {
         if (CrudContext.getCurrentInstance() != null) {
            if (CrudContext.getCurrentInstance().getListModel() != null) {
               if (CrudContext.getCurrentInstance().getListModel().getList() != null) {
Marcos V Castro
 
Mensagens: 2
Data de registro: Sex Ago 14, 2015 6:02 pm

Re: Next 3.8 - Como migrar

Mensagempor rogelgarcia » Seg Ago 17, 2015 11:18 pm

Olá Marcos, muito obrigado por mais essa ótima intervenção.

A outra que sugeriu já está corrigida. E já estou criando um issue para esse bug.

Até mais

Muito Obrigado

Rógel
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Re: Next 3.8 - Como migrar

Mensagempor paulo » Ter Ago 18, 2015 2:44 pm

Boa tarde Rogel,

encontrei a seguinte situação:
na classe DetailTag você alterou o nome da propriedade showBotaoNovaLinha para showButtonNewLine certo? Porém, na template.tld você esqueceu de alterar o nome do atributo
Código: Selecionar tudo
      <attribute>
         <description></description>
         <name>showBotaoNovaLinha</name>
         <required>false</required>
         <rtexprvalue>true</rtexprvalue>
      </attribute>


como sobrescrevemos esse template alteramos aqui, mas fica a dica...

Até mais.
paulo
 
Mensagens: 7
Data de registro: Sex Ago 14, 2015 9:00 am

Re: Next 3.8 - Como migrar

Mensagempor rogelgarcia » Ter Ago 18, 2015 3:06 pm

Obrigado Paulo.

Já está na lista de correções.
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am

Re: Next 3.8 - Como migrar

Mensagempor paulo » Qua Ago 19, 2015 2:37 pm

Boa tarde Rogel,

na classe InputTagSelectComboComponent dentro do método createLoadItensFunction você esqueceu de renomear os parâmetros da função ajaxLoadCombo (listaClasses e listaParametros).

Código: Selecionar tudo
functionCode += "        ajaxLoadCombo('" + inputTag.getRequest().getContextPath() + "', " + comp + ", '" + usingType.getName() + "', '" + Util.strings.escape(absoluteCall)
+ "', listaClasses, listaParametros, '" + inputTag.getSelectLabelProperty() + "', " + parentValue   + ");\n";


mudei para:
Código: Selecionar tudo
functionCode += "        ajaxLoadCombo('" + inputTag.getRequest().getContextPath() + "', " + comp + ", '" + usingType.getName() + "', '" + Util.strings.escape(absoluteCall)
+ "', classesList, parameterList, '" + inputTag.getSelectLabelProperty() + "', " + parentValue   + ");\n";


funcionou perfeitamente...

abraços,

Paulo Henrique
paulo
 
Mensagens: 7
Data de registro: Sex Ago 14, 2015 9:00 am

Re: Next 3.8 - Como migrar

Mensagempor rogelgarcia » Qua Ago 19, 2015 4:37 pm

Beleza Paulo,

Todos esses bugs já estou cadastrando e corrigindo.

Obrigado
rogelgarcia
Administrador
 
Mensagens: 673
Data de registro: Qua Jul 08, 2009 9:02 am


Retornar para Dúvidas

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante

cron