Numa aplicação desktop, a visão muda assim que o model muda, só assim para ter uma consistência. (Imagine seu tocador de MP3, onde a informação de uma música está sendo exibida em duas janelas diferentes. Quando você renomeia o título da música em uma janela, a alteração deve aparecer no mesmo instante na outra janela.) Isso é feito através do padrão Observer, onde seu model é o “observado” que notifica, a quem estiver observando, alguma alteração. O observador é a view, que quando notificado, fara re-renderização da janela (e sem intermédio de controller).
Agora, numa aplicação Web, o que existe é um MVC degenerado, porque as telas NÃO são atualizadas quando ocorre alteração do model (se você consultar um registro numa página, um outro usuário faz update nesse registro e você, depois, não fizer nada, então continuará a ver o mesmo dado antigo na tela).
Nunca disse para atualizar model sem passar pelo controller. O que a view poderia fazer diretamente é a consulta, CON-SUL-TA, ao model. Ok?
Outra, imagine uma entidade chamada Produto (model). Aí, quando você consulta, muito provavelmente chamará o controller, que é classe ProdutoAction e método consulta(), certo? Pela lógica do framework, a view será direcionada para /WEB-INF/pages/produto/produto-consulta-ok.jsp, que seria mais ou menos assim:
<p>Produto selecionado: ${produto.nome} <br>Por apenas <span class="preco">${produto.preco}</span></p>
Repare, a view conhece o model, sabe que existe um produto e este tem nome e preco como atributos.
Isso todo mundo faz, mas esquecem que esta é a implicação de que a view conhece o model, manipulando-o apenas para a consulta.