java/sql-vyuka/web/ajax.jspx
author František Kučera <franta-hg@frantovo.cz>
Sun Dec 20 01:14:28 2009 +0100 (2009-12-20)
changeset 73 7252f80b39de
parent 58 bbc73f664363
permissions -rw-r--r--
Podpora XML tabulek – výstupu.
Pokud výsledek dotazu má jen jeden sloupec a ten se jmenuje "pouze_xml",
nevykreslí se klasická tabulka, ale obsah prvního záznamu se vloží do <pre> … </pre>
Uživatel si tak může přehledněji zobrazit XML výstup generovaný databází.

Je možné kombinovat i s klasickými tabulkami:
SELECT 123 AS číslo;
SELECT query_to_xml('SELECT * FROM tabulka;', true, false, '…') AS pouze_xml;
SELECT * FROM tabulka;
Zobrazí klasickou tabulku, potom XML výstup uzavřený v <pre/> a potom zase klasickou tabulku.
     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"
     3           xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
     4           xmlns:fn="http://java.sun.com/jsp/jstl/functions"
     5           xmlns:c="http://java.sun.com/jsp/jstl/core"
     6           version="2.0">
     7     <jsp:directive.page contentType="text/html" pageEncoding="UTF-8"/>
     8     <fmt:setBundle basename="cz.frantovo.sql.vyuka.preklady" scope="application"/>
     9     <jsp:useBean id="ajax" class="cz.frantovo.sql.vyuka.web.Ajax" scope="request"/>
    10 
    11     <jsp:scriptlet>
    12 	    request.setCharacterEncoding("UTF-8");
    13 	    ajax.setKlient(request.getRemoteAddr(), request.getHeader("x-forwarded-for"), request.getRequestedSessionId());
    14     </jsp:scriptlet>
    15 
    16     <c:choose>
    17         <!-- <Akce: Historie a vykonání SQL příkazu> -->
    18         <c:when test="${param.akce == 'historie' || param.akce == 'vykonat'}">
    19             <!-- <Načteme výsledek z beany>  -->
    20             <c:choose>
    21                 <c:when test="${param.akce == 'historie'}">
    22                     <c:set var="vysledek" value="${ajax.historie}" scope="request"/>
    23                 </c:when>
    24                 <c:when test="${param.akce == 'vykonat'}">
    25                     <jsp:setProperty name="ajax" property="sqlPrikaz" value="${param.sql}"/>
    26                     <c:set var="vysledek" value="${ajax.SQLVysledek}" scope="request"/>
    27                 </c:when>
    28             </c:choose>
    29             <!-- </Načteme výsledek z beany>  -->
    30 
    31             <!-- <Tabulky> -->
    32             <c:forEach var="tabulka" items="${vysledek.tabulky}">
    33                 <!-- <lokalizace> -->
    34                 <c:choose>
    35                     <c:when test="${tabulka.lokalizovat}">
    36                         <fmt:message key="${tabulka.zahlaviTip}" var="zahlaviTip"/>
    37                     </c:when>
    38                     <c:otherwise>
    39                         <c:set value="${tabulka.zahlaviTip}" var="zahlaviTip"/>
    40                     </c:otherwise>
    41                 </c:choose>
    42                 <!-- </lokalizace> -->
    43 		<c:choose>
    44                     <c:when test="${fn:length(tabulka.zahlavi) == 1 &amp;&amp; tabulka.zahlavi[0] == 'pouze_xml'}">
    45 			<!-- <XML tabulka> -->
    46                         <pre><c:out value="${tabulka.hodnoty[0][0]}" /></pre>
    47 			<!-- </XML tabulka> -->
    48                     </c:when>
    49                     <c:otherwise>
    50 			<!-- <bežná tabulka> -->
    51 			<table>
    52 			    <thead title="${zahlaviTip}">
    53 				<tr>
    54 				    <c:forEach var="zahlavi" items="${tabulka.zahlavi}">
    55 					<td>
    56 					    <!-- <lokalizace> -->
    57 					    <c:if test="${tabulka.lokalizovat}">
    58 						<fmt:message key="${zahlavi}" var="zahlavi"/>
    59 					    </c:if>
    60 					    <!-- </lokalizace> -->
    61 					    <c:out value="${zahlavi}"/>
    62 					</td>
    63 				    </c:forEach>
    64 				</tr>
    65 			    </thead>
    66 			    <tbody>
    67 				<c:forEach var="radek" items="${tabulka.hodnoty}">
    68 				    <tr>
    69 					<c:forEach var="bunka" items="${radek}">
    70 					    <!-- <formátováníPodleDatovýchTypů> -->
    71 					    <c:choose>
    72 						<c:when test="${bunka.class == 'class java.sql.Timestamp'}">
    73 						    <td>
    74 							<fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy HH:mm:ss"/>
    75 							<!-- uvnitř vzoru je nedělitelná mezera -->
    76 						    </td>
    77 						</c:when>
    78 						<c:when test="${bunka.class == 'class java.sql.Date'}">
    79 						    <td>
    80 							<fmt:formatDate value="${bunka}" pattern="dd.MM.yyyy"/>
    81 						    </td>
    82 						</c:when>
    83 						<c:when test="${bunka.class == 'class java.lang.Integer' || bunka.class == 'class java.math.BigDecimal'}">
    84 						    <td class="cislo">
    85 							<fmt:formatNumber value="${bunka}" pattern="###,###.###"/>
    86 						    </td>
    87 						</c:when>
    88 						<c:when test="${bunka.class == 'class java.lang.Boolean'}">
    89 						    <td>
    90 							<c:choose>
    91 							    <c:when test="${bunka}">
    92 								<fmt:message key="boolean.pravda.tip" var="pravda"/>
    93 								<abbr title="${pravda}"><fmt:message key="boolean.pravda"/></abbr>
    94 							    </c:when>
    95 							    <c:otherwise>
    96 								<fmt:message key="boolean.nepravda.tip" var="nepravda"/>
    97 								<abbr title="${nepravda}"><fmt:message key="boolean.nepravda"/></abbr>
    98 							    </c:otherwise>
    99 							</c:choose>
   100 						    </td>
   101 						</c:when>
   102 						<c:otherwise>
   103 						    <td>
   104 							<c:out value="${bunka}" />
   105 						    </td>
   106 						</c:otherwise>
   107 					    </c:choose>
   108 					    <!-- </formátováníPodleDatovýchTypů> -->
   109 					</c:forEach>
   110 				    </tr>
   111 				</c:forEach>
   112 			    </tbody>
   113 			</table>
   114 			<!-- </bežná tabulka> -->
   115 		    </c:otherwise>
   116                 </c:choose>
   117             </c:forEach>
   118             <!-- </Tabulky> -->
   119 
   120             <!-- <Hlášky> -->
   121             <c:forEach var="hlaska" items="${vysledek.hlasky}">
   122                 <p class="vysledek${hlaska.typ}">
   123                     <c:out value="${hlaska.text}" escapeXml="${hlaska.escapovat}" />
   124                 </p>
   125             </c:forEach>
   126             <!-- </Hlášky> -->
   127         </c:when>
   128         <!-- </Akce: Historie a vykonání SQL příkazu> -->
   129 
   130 
   131         <!-- <Akce: Nápověda> -->
   132         <c:when test="${param.akce == 'napoveda'}">
   133             <!-- <VolbaMetody> -->
   134             <c:choose>
   135                 <c:when test="${param.pruvodce == 'podleId'}">
   136                     <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
   137                     <c:set var="pruvodce" value="${ajax.pruvodcePodleId}" scope="request"/>
   138                 </c:when>
   139                 <c:when test="${param.pruvodce == 'podleKodu'}">
   140                     <jsp:setProperty name="ajax" property="kodPruvodce" value="${param.kodPruvodce}"/>
   141                     <c:set var="pruvodce" value="${ajax.pruvodcePodleKodu}" scope="request"/>
   142                 </c:when>
   143                 <c:when test="${param.pruvodce == 'predchozi'}">
   144                     <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
   145                     <c:set var="pruvodce" value="${ajax.pruvodcePredchozi}" scope="request"/>
   146                 </c:when>
   147                 <c:when test="${param.pruvodce == 'nasledujici'}">
   148                     <jsp:setProperty name="ajax" property="idPruvodce" value="${param.idPruvodce}"/>
   149                     <c:set var="pruvodce" value="${ajax.pruvodceNasledujici}" scope="request"/>
   150                 </c:when>
   151             </c:choose>
   152             <!-- </VolbaMetody> -->
   153 
   154             <!-- <Výpis> -->
   155             <c:choose>
   156                 <c:when test="${pruvodce.lokalizovat}">
   157                     <h1><fmt:message key="${pruvodce.nadpis}"/></h1>
   158                     <fmt:message key="${pruvodce.obsah}"/>
   159                 </c:when>
   160                 <c:otherwise>
   161                     <h1><c:out value="${pruvodce.nadpis}"/></h1>
   162                     <c:out value="${pruvodce.obsah}" escapeXml="false"/>
   163                 </c:otherwise>
   164             </c:choose>
   165             <form action="#" id="pruvodceData">
   166                 <textarea name="id" cols="100" rows="1">${pruvodce.id}</textarea>
   167             </form>
   168             <!-- </Výpis> -->
   169         </c:when>
   170         <!-- </Akce: Nápověda> -->
   171     </c:choose>
   172 </jsp:root>