Subversion Repositories bacoAlunos

Rev

Rev 1577 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    <h1>Teste aos Controladores de Widgets de Exemplo</h1>

    <h2>Ficheiros biblioteca, não são para alterar</h2>
    <ul>
        <li>conf/WEB-INF/struts/tiles-jsonwidget.xml (Layouts de Respostas JSON)</li>
        <li>conf/WEB-INF/struts/struts-jsonwidget.xml (Global Forwards de Respostas JSON)</li>
        <li>classe para extender controladores pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController</li>
    </ul>

    <h2>Ficheiro de Configuração de exemplo para novos Controladores de Widgets</h2>
    <ul>
        <li>conf/WEB-INF/struts/examples/struts-example/jsonwidget.xml</li>
    </ul>

    <h2>Controladores e form de Exemplo</h2>
    <ul>
        <li>classe de Exemplo pt.estgp.estgweb.web.controllers.examples.jsonwidget.JsonWidgetExampleForm</li>
        <li>classe de Exemplo pt.estgp.estgweb.web.controllers.examples.jsonwidget.WidgetExampleController</li>
    </ul>

    <h2>Chamadas de Exemplo do Serviço AJAX/JSON</h2>
    <p>Os exemplos de chamada das bibliotecas JavaScript são um nível de abstração acima destes exemplos</p>
    <ul>
        <li>
            <a href="<%=request.getContextPath()%>/widgetWithValidationExample.do?dispatch=executeService&serviceJson=serviceClean&nome=teste">
                Teste de um servico sem erros e com validacao
            </a>
        </li>
        <li>
            <a href="<%=request.getContextPath()%>/widgetWithValidationExample.do?dispatch=executeService&serviceJson=serviceClean">
                Teste de um servico com erros e com validacao onde foi omitido o campo nome que é obrigatório
            </a>
        </li>
        <li>
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeService&serviceJson=serviceException">
                Teste de um servico com uma excepção
            </a>
        </li>
        <li>
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeSimpleServiceOkFail&serviceJson=serviceSimpleOkExample">
                Teste de um servico Tipo Ok ou Fail Simples
            </a>
        </li>
        <li>
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeSimpleServiceOkFail&serviceJson=serviceSimpleFailExample">
                Teste de um servico Tipo Ok ou Fail Simples com FALHA
            </a>
        </li>
    </ul>


    <h2>Como usar as bilbiotecas de chamada AJAX</h2>
    <p>
        Bibliotecas de alto nível. Libertam o developer para a colocação de mensagens e para a interpretação do estado de resposta a um pedido,
        bastando haver um div com a class web-messages dentro do Form. O developer apenas tem de programar os handlers de sucesso e de falha.</p>
    <p>Existem dois tipos de chamadas possiveis, as que devolvem um objecto json e as simples que apenas devolvem ok ou fail através da invocação do handler respectivo</p>

    <div class="web-messages"><div class="alert alert-info">Exemplo Div para mensagens WEB mas nao é afectado pelo form</div> </div>
    <p>Form de Struts com Auto preenchimento de Campos mas invoca um Widget Controller</p>
    <html:form styleClass="form-horizontal" action="/widgetWithValidationExample" onsubmit="return false;">
        <div class="web-messages">Aqui vão aparecer as mensagens de Erro ou de Feedback do Widget</div>
        <div class="form-group">
            <label>Nome</label>
            <html:text styleClass="form-control" property="nome"/>
        </div>

        <div>
            <script>
                function widgetCallClean(form)
                {
                    widgetCall('serviceClean',form,
                            function(response)
                            {
                                alert("Accao de resposta terminada: " + response.dataExample);
                            });
                }
                function widgetCallWithErrors(form)
                {
                    widgetCall('serviceWithErrors',form,
                            function(response)
                            {
                                alert("Accao de resposta terminada: " + response.dataExample);
                            },
                            function(response)
                            {
                                alert("Accao Falhou mas as resposta foi esta: " + response.dataExample);
                            });
                }
                function widgetCallExceptionTest(form)
                {
                    widgetCall('serviceException',form,
                            function(response)
                            {
                                alert("Accao de resposta terminada: " + response.dataExample);
                            });
                }

                function widgetChamadaSimples(form)
                {
                    widgetSimpleCall('serviceSimpleOkExample',form,
                            function()
                            {
                                alert("OK");
                            },
                            function()
                            {
                                alert("Fail");
                            });
                }
                function widgetChamadaFalha(form)
                {
                    widgetSimpleCall('serviceSimpleFailExample',form,
                            function()
                            {
                                alert("OK");
                            },
                            function()
                            {
                                alert("Fail");
                            });
                }


            </script>
            <p>(Pode usar ou nao o campo "nome" para ver o resultado da validação do Form. Quando a validacao do form nao passa apenas vem uma falha e uma lista de erros, quando a falha é propositada dentro do controller com a adicao de erros é possivel enviar o objecto json como resposta)</p>
            <button class="btn btn-success" type="button" onclick="widgetCallClean(this.form)">Submeter Simulacao Servico OK</button>
            <button class="btn btn-warning" type="button" onclick="widgetCallWithErrors(this.form)">Submeter Simulacao Servico Com Erros</button>
            <button class="btn btn-danger" type="button" onclick="widgetCallExceptionTest(this.form)">Submeter Simulacao Servico Com Excepção</button>
            <button class="btn btn-success" type="button" onclick="widgetChamadaSimples(this.form)">Submeter Simulacao Servico SIMPLES OK/FAIL TUDO OK</button>
            <button class="btn btn-warning" type="button" onclick="widgetChamadaFalha(this.form)">Submeter Simulacao Servico SIMPLES OK/FAIL FALHA</button>
        </div>
    </html:form>