Subversion Repositories bacoAlunos

Rev

Rev 1577 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1576 jmachado 1
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
2
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
3
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
4
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
5
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
6
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
7
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
8
 
9
 
10
    <h1>Teste aos Controladores de Widgets de Exemplo</h1>
11
 
12
    <h2>Ficheiros biblioteca, não são para alterar</h2>
13
    <ul>
14
        <li>conf/WEB-INF/struts/tiles-jsonwidget.xml (Layouts de Respostas JSON)</li>
15
        <li>conf/WEB-INF/struts/struts-jsonwidget.xml (Global Forwards de Respostas JSON)</li>
16
        <li>classe para extender controladores pt.estgp.estgweb.web.controllers.utils.AbstractWidgetAjaxController</li>
17
    </ul>
18
 
19
    <h2>Ficheiro de Configuração de exemplo para novos Controladores de Widgets</h2>
20
    <ul>
21
        <li>conf/WEB-INF/struts/examples/struts-example/jsonwidget.xml</li>
22
    </ul>
23
 
24
    <h2>Controladores e form de Exemplo</h2>
25
    <ul>
26
        <li>classe de Exemplo pt.estgp.estgweb.web.controllers.examples.jsonwidget.JsonWidgetExampleForm</li>
27
        <li>classe de Exemplo pt.estgp.estgweb.web.controllers.examples.jsonwidget.WidgetExampleController</li>
28
    </ul>
29
 
30
    <h2>Chamadas de Exemplo do Serviço AJAX/JSON</h2>
31
    <p>Os exemplos de chamada das bibliotecas JavaScript são um nível de abstração acima destes exemplos</p>
32
    <ul>
33
        <li>
34
            <a href="<%=request.getContextPath()%>/widgetWithValidationExample.do?dispatch=executeService&serviceJson=serviceClean&nome=teste">
35
                Teste de um servico sem erros e com validacao
36
            </a>
37
        </li>
38
        <li>
39
            <a href="<%=request.getContextPath()%>/widgetWithValidationExample.do?dispatch=executeService&serviceJson=serviceClean">
40
                Teste de um servico com erros e com validacao onde foi omitido o campo nome que é obrigatório
41
            </a>
42
        </li>
43
        <li>
44
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeService&serviceJson=serviceException">
45
                Teste de um servico com uma excepção
46
            </a>
47
        </li>
48
        <li>
49
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeSimpleServiceOkFail&serviceJson=serviceSimpleOkExample">
50
                Teste de um servico Tipo Ok ou Fail Simples
51
            </a>
52
        </li>
53
        <li>
54
            <a href="<%=request.getContextPath()%>/widgetExample.do?dispatch=executeSimpleServiceOkFail&serviceJson=serviceSimpleFailExample">
55
                Teste de um servico Tipo Ok ou Fail Simples com FALHA
56
            </a>
57
        </li>
58
    </ul>
59
 
60
 
61
    <h2>Como usar as bilbiotecas de chamada AJAX</h2>
62
    <p>
63
        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,
64
        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>
65
    <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>
66
 
67
    <div class="web-messages"><div class="alert alert-info">Exemplo Div para mensagens WEB mas nao é afectado pelo form</div> </div>
68
    <p>Form de Struts com Auto preenchimento de Campos mas invoca um Widget Controller</p>
69
    <html:form styleClass="form-horizontal" action="/widgetWithValidationExample" onsubmit="return false;">
70
        <div class="web-messages">Aqui vão aparecer as mensagens de Erro ou de Feedback do Widget</div>
71
        <div class="form-group">
72
            <label>Nome</label>
73
            <html:text styleClass="form-control" property="nome"/>
74
        </div>
75
 
76
        <div>
77
            <script>
78
                function widgetCallClean(form)
79
                {
80
                    widgetCall('serviceClean',form,
81
                            function(response)
82
                            {
83
                                alert("Accao de resposta terminada: " + response.dataExample);
84
                            });
85
                }
86
                function widgetCallWithErrors(form)
87
                {
88
                    widgetCall('serviceWithErrors',form,
89
                            function(response)
90
                            {
91
                                alert("Accao de resposta terminada: " + response.dataExample);
92
                            },
93
                            function(response)
94
                            {
95
                                alert("Accao Falhou mas as resposta foi esta: " + response.dataExample);
96
                            });
97
                }
98
                function widgetCallExceptionTest(form)
99
                {
100
                    widgetCall('serviceException',form,
101
                            function(response)
102
                            {
103
                                alert("Accao de resposta terminada: " + response.dataExample);
104
                            });
105
                }
106
 
107
                function widgetChamadaSimples(form)
108
                {
109
                    widgetSimpleCall('serviceSimpleOkExample',form,
110
                            function()
111
                            {
112
                                alert("OK");
113
                            },
114
                            function()
115
                            {
116
                                alert("Fail");
117
                            });
118
                }
119
                function widgetChamadaFalha(form)
120
                {
121
                    widgetSimpleCall('serviceSimpleFailExample',form,
122
                            function()
123
                            {
124
                                alert("OK");
125
                            },
126
                            function()
127
                            {
128
                                alert("Fail");
129
                            });
130
                }
131
 
132
 
133
            </script>
134
            <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>
135
            <button class="btn btn-success" type="button" onclick="widgetCallClean(this.form)">Submeter Simulacao Servico OK</button>
136
            <button class="btn btn-warning" type="button" onclick="widgetCallWithErrors(this.form)">Submeter Simulacao Servico Com Erros</button>
137
            <button class="btn btn-danger" type="button" onclick="widgetCallExceptionTest(this.form)">Submeter Simulacao Servico Com Excepção</button>
138
            <button class="btn btn-success" type="button" onclick="widgetChamadaSimples(this.form)">Submeter Simulacao Servico SIMPLES OK/FAIL TUDO OK</button>
139
            <button class="btn btn-warning" type="button" onclick="widgetChamadaFalha(this.form)">Submeter Simulacao Servico SIMPLES OK/FAIL FALHA</button>
140
        </div>
141
    </html:form>
142