Com AJAX, estamos mandando requisições assincronas para não termos que depender da requisição sincrona que o Controller gerencia, mas aí estamos tirando o gerenciamento da requisição do Controller e deixando o mesmo na view quando usamos JQuery.
O Controller não deveria também gerenciar requisições assíncronas a invés de termos que lidarmos com esse tipo de requisição na View?
Não quebra Jaba.
Porquê o padrão MVC prevê a atualização da VIEW através de event calls(State Query) direto do Modelo.
Utilizando a Tecnologia WEB de hoje em dia isso só é possível com Ajax.
Ou seja, apesar de haver uma request que não é orquestrada pelo controller, o comportamento esperado é o que importa.
Um exemplo desse tipo de “ligação” entre Model e View são as ActionListeners do JSF.
Não entendi como o ActionListener em JSF representaria uma ligação entre Model e View. Você está dizendo que a classe que implementa ActionListener faz parte do Model?
Não seria, nesse caso, uma ligação entre Controller e View?
Não entendi como o ActionListener em JSF representaria uma ligação entre Model e View. Você está dizendo que a classe que implementa ActionListener faz parte do Model?
Não seria, nesse caso, uma ligação entre Controller e View?[/quote]
O Controller do JSF é centralizado, no caso o FacesController.
O ManagedBean que implementa o ActionListener faz a ligação do modelo com a view. Atualizando a VIEW de acordo com o estado do Modelo (ManagedBeans).
Por se tratar no final das contas de uma query de estado do modelo o action listener no JSF fica no final do ciclo de vida do Framework.
Se o Backing Bean faz parte do Model e ele implementa uma interface específica de JSF (ActionListener), isso não acoplaria o Model a uma tecnologia específica? Isso é desejável?
Saindo um pouco da discussão de frameworks, a simples utilização de AJAX, a meu ver, não quebra (nem trinca rsrsrs) o modelo mvc, desde que controle e modelo tratem as requisições de forma igual (só o que muda é que o resultado não vai afetar a página inteira).
Por exemplo, uma página jsp pode fazer quantas requisições quiser sem precisar atualizar a página (através de ajax), se um controlador receber a requisição, manipular o modelo e enviar uma resposta, nada do MVC foi desrespeitado…
[quote=drigo.angelo]Saindo um pouco da discussão de frameworks, a simples utilização de AJAX, a meu ver, não quebra (nem trinca rsrsrs) o modelo mvc, desde que controle e modelo tratem as requisições de forma igual (só o que muda é que o resultado não vai afetar a página inteira).
Por exemplo, uma página jsp pode fazer quantas requisições quiser sem precisar atualizar a página (através de ajax), se um controlador receber a requisição, manipular o modelo e enviar uma resposta, nada do MVC foi desrespeitado… :P[/quote]
Exato.
No final das contas é isso que os Frameworks Web encapsulam.
Diria que é a única forma de se ter um MVC completo em aplicações web, com atualização da View de acordo com a mudança dinâmica de estado do modelo.
Bom,
Se você está usando JSF você precisa representar o seu modelo com essa tecnologia certo?
Se você estivesse usando swing teria que implementar o java.awt.event.ActionListener.
Independente da Camada, vc vai sempre estar representando um estado ou comportamento do seu Modelo de Domínio de alguma forma, você minimiza o acoplamento utilizando interfaces e outros recursos como REST, Injeção de dependencias e AOP.