modelDriven + Servlet

4 respostas
kartler

Olá pessoal tudo bem…

Tenho uma pequena aplicação a qual não haverá a necessidade de se configurar tantos XMLs(validators,components,etc…)…

Mas tem uma Funcionalidade que é ideal para mim, que é o ModelDriven, eu posso usar o model Driven em class que Extends servlets??? ? pois preciso da funcionalidade de preencher os Beans que o Xwork proporciona…

Eu implementei modelDriven em meu servlet mas ele não esta preechendo o modelo com os dados vindos do Formulário…

qualquer dica é bemmmmmmm vinda, muito bem vinda mesmo…

Valeu.

4 Respostas

_fs

Dei uma olhada rápida nos sources, e pelo que pude perceber a coisa toda depende do ActionSupport para acontecer.

Mas aconselho a postar essa dúvida no fórum do WebWork :smiley:

smota

Nope … quem gerencia todo o esquema e as funcionalidades do Webwork é seu servlet (com.opensymphony.webwork.dispatcher.ServletDispatcher) que trata todas as requisições das actions … a partir dele é que toda a mágica funciona …

Entonces isso tudo significa que implementar a interface modeldriven em um servlet não serve pra nada pois a chamada ao servlet não será tratada pelo dispatcher do Webwork.

Claro que no seu servlet você poderá internamente usar o xwork e imitar a parte de preenchimento dos beans … mas ficaria meio feio, porque sua solução não pode ser usando uma action mesmo?

Até hoje me deparei com pouquissimos casos onde uma action e um result próprio não resolvessem mais elegantemente :smiley:

kartler

:wink: Valeusssssss

_fs

Smota tá corretíssimo quanto ao ServletDispatcher, mas se a classe não estender Action também não dá certo:

ServletDispatcher.class
ActionProxy proxy = ActionProxyFactory.getFactory().createActionProxy(namespace, actionName, extraContext);

DefaultActionProxyFactory.class >> createActionProxy( ... )
return new DefaultActionProxy(namespace, actionName, extraContext, true);

DefaultActionInvocation.class >> createAction()
        try {
            action = ObjectFactory.getObjectFactory().buildAction(proxy.getConfig());
        } catch (InstantiationException e) {
            throw new XworkException("Unable to intantiate Action!", e);
        } catch (IllegalAccessException e) {
            throw new XworkException("Illegal access to constructor, is it public?", e);
        } catch (ClassCastException e) {
            throw new XworkException("Action class " + proxy.getConfig().getClassName() + " does not implement " + Action.class.getName(), e);
        } catch (Exception e) {
            String gripe = "";

ObjectFactory.getObjectFactory().buildAction( ... )
    public Action buildAction(ActionConfig config) throws Exception {
        return (Action) buildBean(config.getClassName());
    }
Criado 20 de janeiro de 2005
Ultima resposta 21 de jan. de 2005
Respostas 4
Participantes 3