2012-03-30 4 views
0

ich entwickle eine app, die mit struts2 + kacheln + dojo (für den ajax teil) gebaut wird, und ich habe folgende anforderung: Alle 2 sekunden muss ich eine tabelle aus der DB überprüfen, wenn bestimmte bedingungen sind erfüllt, ich muss den Benutzer auf eine spezielle Seite umleiten.
Die Art und Weise, dass ich dieses Problem gelöst wurde die Schaffung eines struts2 Aktionen auf den Tisch und machen als Antwort so etwas wie die `s überprüfen:struts2 ajax redirect

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
    <%@taglib prefix="s" uri="/struts-tags"%> 
    <html> 
    <body>  
     <script> 
     window.location= '<s:property value="url"/>'; 
     </script> 
    </body> 
    </html> 

und diese Seite wird accesed wie über einen Ajax-Aufruf:

<sx:div href="%{ajaxUrl}" 
    updateFreq="1200" 
    cssStyle="float:right" 
    id="live" 
    loadingText="Loading..." 
    executeScripts="true" 
    parseContent="false"> 
</sx:div> 

und das ist, wie ich die Umleitung erreichen. Ich bin mir sicher, dass es eine elegantere und optimierte Lösung geben muss.
Irgendwelche Ideen?

Antwort

0

Verwenden Sie das struts2-json-plugin für die Aktion, die das Ziel von ajaxUrl ist. Ich benutze die sx-Tags nicht, ich benutze nur JS (mit jQuery, die normale Bibliothek verwendet kein struts2-Plugin). Jede Möglichkeit benutzt JS, um Ihre Aktion alle 2 Sekunden asynchron mit JS (oder einem Framework Ihrer Wahl) aufzurufen und Sie werden die URL als JSON-String zurückbekommen, und Sie werden dann zu dieser neuen URL umleiten, wenn die Zeichenfolge nicht leer ist (oder Sie könnte vielleicht viele Variablen zurückgeben, die vielleicht einige der Bedingungen enthalten, die in der DB gefunden werden, und sie auf der Seite anzeigen und entsprechend diesen Statusvariablen umleiten).

+0

Hallo Quaternion, scheint eine gute Idee, die sx-Tags zu entfernen, weil ich sie hasse :), werde ich versuchen Sie mit Ihrer Lösung und kam zurück, um die Ergebnisse/mark Antwort als akzeptiert. –