EXTJS Java

Alguem ja desenvolveu aplicações reais com ExJ4 com algum framework action base? Gostaria muito de trocar ideias…
Estou muito interessado no assunto…

[quote=FernandoFranzini]Alguem ja desenvolveu aplicações reais com ExJ4 com algum framework action base? Gostaria muito de trocar ideias…
Estou muito interessado no assunto…[/quote]

Eu já fiz algumas aplicações reais com extjs4 e Spring MVC.

O que precisa saber?

Use servlets e http://code.google.com/p/google-gson/

final Map<String, Object> json = new HashMap<String, Object>();
json.put("minhaVeriavel", "meu valor");

response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");

final Gson gson = new Gson();
response.getWriter().write(gson.toJson(json));

Bom dia Loiane

Eu gostaria de começar um projeto piloto com ExtJ e validar uma arquitetura para produção. Venho tendo experiencias bem ruins com JSF e gostei muito da qualidade do ExtJ.

Andei vendo que existe um conector Java chamados Ext.Direc mas não achei muita documentação. Gostaria de saber quais são as opções de uso.

  1. Eu vi que é possivel usar com SpringMVC, VRaptor, DWR, directjngine e extdirectspring. Qual vc em usado? Comentários de cada um deles?
  2. Vc ja colocou esse produtos em produção? Quais foram as maiores dificuldades?
  3. Eles quebram muito a compatibilidade entre a evoluções das versões? Tenho muito receio com esse tipo coisa…
  4. O seu livro aborda o uso de algum framework MVC deles?

[quote=FernandoFranzini]Bom dia Loiane

Eu gostaria de começar um projeto piloto com ExtJ e validar uma arquitetura para produção. Venho tendo experiencias bem ruins com JSF e gostei muito da qualidade do ExtJ.

Andei vendo que existe um conector Java chamados Ext.Direc mas não achei muita documentação. Gostaria de saber quais são as opções de uso.

  1. Eu vi que é possivel usar com SpringMVC, VRaptor, DWR, directjngine e extdirectspring. Qual vc em usado? Comentários de cada um deles?
  2. Vc ja colocou esse produtos em produção? Quais foram as maiores dificuldades?
  3. Eles quebram muito a compatibilidade entre a evoluções das versões? Tenho muito receio com esse tipo coisa…
  4. O seu livro aborda o uso de algum framework MVC deles?

[/quote]

Oi Fernando, o Ext.Direct é uma ferramenta dentro do ExtJS. Com ele, você vai programar quase tudo dentro do seu código servidor. Eu particularmente não sei de ninguém aqui no Brasil que esteja usando ele, e também não recomendo, justamente pq fica fica obrigado a comprar a licença e por questão de compatibilidade entre versões.

Já deu uma olhada na api padrão do ExtJS? Os componentes conversam com o Java através de JSON ou XML, e aí é mt fácil usar SpringMVC, VRaptor, Struts ou qualquer outro framework de sua escolha. A partir da versão 4 existem muitas mudanças, mas agora que a arquitetura do framework está definida, a questão entre uma versão e outra será de correção de bugs e novas funcionalidades somente. A Sencha também se preocupa muita em ser compatível com versões.

No meu livro apenas abordo as mudanças entre a versão 3 e 4. Se tiver interesse, dê uma olhada no meu blog, tem vários exemplos com SpringMVC e até VRaptor. Tem um curso gratuito também se tiver interessado.

Eu virei muito fã do ExtJS depois que trabalhei para um cliente americano. Eles fizeram um sistema bem grande com ExtJS e SpringMVC e ficou bem legal.

No caso, você pode usar a arquitetura MVC do ExtJS 4 no frontend e no backend você pode usar os frameworks Java que vc quiser.

Aqui tem um exemplo bem básico: https://github.com/loiane/cafe-com-tom-extjs4 que dá pra vc ter uma idéia do que pode fazer. E se quiser ainda integrar com Spring Security, por exemplo, fica bem simples de fazer tb.

Ola Loiane

Eu tb estou virando fã do extj. Mas vamos ver aonde vai dar isso.
Já estou lendo a documentação oficial…tb estou vendo todas as suas videos aulas e já gostaria e dar parabéns pelo ótimo trabalho e qualidade do material.

Entendi sobre o Ext.Direct…vou deixar de lado. Ja estou vendo um framework Java MVC “action-like” para usar. Me parece o VRaptor é oq vou acabar usando…integração com Spring, Bean Validator, Brazuca e bem facil.

Minhas preocupações agora são:

  • trabalhar com extj da mesma forma que eu trabalho com Swing…fazer classes visuais GUI extj visando reutilização e manutenção centralizada ao invés de espalhar o código das construções em vários lugares?
  • padrão de codificação JS. Como organizar o código das GUJ exts?
  • gerenciamento de memoria dentro dos navegadores, uma vez que agora o estado da soluções ficam todos no DOM vindouras do server side via json. Existe praticas para liberar memoria dos gastos do objetos no DOM? É possível faltar memoria no navegador em soluções com muitas GUI?

Alguma dica sobre esses pontos?

Pessoal ressuscitando esse post, estou encontrando um erro na com o ext js que sozinho não estou conseguindo resolver, o erro é o seguinte, tenho uma servelet que se comunica com o cliente via json, porem quando executo a aplicação ele faz a requisição ajax tudo certinho, chama o servlet monta os dados no formato json porem quando abro o console do google chrome ela da a seguinte mensagem:

[E] Ext.JSON.decode(): You're trying to decode an invalid JSON String: {"nomeUsuario":"Nome do usuário"}

Abaixo segue o medel do ext js:

Ext.define('Usuario',{
    extend:'Ext.data.Model',
                
    fields:[
    {
        name: 'nomeUsuario'
        type: 'string'
    }
    ]
});

abaixo segue o codigo da store:

 Ext.define('UsuarioStore',{
            extend:'Ext.data.Store',
            model:'Usuario',
            proxy:{   
                type:'ajax', 
                url:'Controller?cmd=getNomesUsuarios',
                reader:{ 
                    type:'json' 
                }
    
            },
            autoLoad:true 
        })
            
        Ext.onReady(function(){
            var nomeUsuario= Ext.create('UsuarioStore');
            console.log(nomeUsuario);
        });

Conto com a ajuda de vc6.

Vou dar um chute: verifique se o “Content-Type” do teu response é “application/json”.

O código no servidor responsável por executar a operação esta assim:

  @Override
    public String execulte(HttpServletRequest request, HttpServletResponse response) {
        String contatosJson = "";
        Map<String, Object> json = new HashMap<String, Object>(2);
        final Gson gson = new Gson();
        response.setContentType("application/json");
        List<Contatos> listaContatos = new ContatosDAO(this.session).findAll();
        if (listaContatos != null) {
            try {
                for (Contatos contatos : listaContatos) {
                    json.put("nomeUsuario", contatos.getUsuarios().getNomeUsuario());
                    System.out.println(json.get("nomeUsuario"));
                    break;
                }
                response.getWriter().write(gson.toJson(json));

            } catch (IOException ex) {
                System.out.println("Erro ao recuperar o stream para escrita da response. Erro: " + ex);
            }

        }
        return "contatos.jsp";
    }
}