Subversion Repositories bacoAlunos

Rev

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