| 

.NET C# Java Javascript Exception

Direkte Aktualisierung verschiedener Templates innerhalb eines Views

Dies ist das Archiv des ehemaligen Forums zum Thema Groovy, Grails, Griffon und Bean Scripting Framework, welches unter groovy-forum.de existierte. Die neue Adresse des Groovy-Forums ist: http://codekicker.de/fragen/themen/groovy.


Direkte Aktualisierung verschiedener Templates innerhalb eines Views

tom - 06.08.2008 10:57
Hallo,
ich möchte folgenden Anwendungsfall elegant lösen.
Leider habe ich selbst bisher keine richtig gute gefunden.
Ich habe eine Hauptseite(HomeController), die in verschiedene Bereiche unterteilt ist,
für das Problem jedoch auf zwei Bereiche reduziert werden kann.
Im ersten Bereich soll eine Art Baumstruktur dargestellt werden, im zweiten Bereich der Content.
Wichtig für mich ist, dass nicht jedesmal die gesamte Hauptseite neu geladen werden muss.

Mit dem RichUI-Treeview hab' ich es versucht, bin damit aber nicht sehr zufrieden,
da ich Probleme beim Erstellen des XML und dem rekursiven Einlesen meiner Tree-Struktur habe.
Ich bekomme nämlich Stackoverflows und hab' keine Lösung dafür ;-)
Zusätzlich könnte sogar das Einlesen der Baumstruktur auch etwas länger dauern als erträglich.

Also zeige ich in einem Template (treeListTemplate) nur die erste Ebene meiner Baumstruktur an.
Im Template benutze ich das remoteLink-Tag, um bei einem Klick auf einen Eintrag
dann die zugehörigen Untereinträge anzuzeigen.
Soll heißen: ich rufe im Controller die Methode "loadtree" auf und rendere das Ergebnis im update-Feld des remoteLink-Tags.
Jetzt möchte ich allerdings zusätzlich im Content-Bereich eine Liste mit Verknüpfungen des angeklickten Parent-Eintrags anzeigen.
Ich habe das mit einem weiteren Ajax-Aufruf im after-Tag des remoteLink's realisiert.
(Ich hätte natürlich auch zwei Ajax-Aufrufe nehmen können, hatte aber mit dem remoteLink-Tag experimentiert.)
Dieser Aufruf hat im update-Tag die ID des Content-Bereichs enthalten.
Ich finde das aber keine gute Lösung und würde es lieber über irgendeine SiteMesh-Render-Funktion lösen.
Wer kann mir hierzu eine bessere Lösung vorschlagen?

Über eine weiterführende Antwort würde ich mich sehr freuen.
Viele Grüße
tom

Hier noch etwas Code zum besseren Verständnis ;-)
//Haupt-Layout
//Hier werden die verschiedenen Bereiche angezeigt
<div class="content">
	<div class="left">
		<g:render template="/treeListTemplate" />
	</div>
	<div class="center">
		<g:render template="/contentTemplate" />
	</div>
	<div class="right"></div>
</div>


//treeListTemplate
//Darstellung der Haupt-Einträge und bei Klick natürlich die Unter-Einträge usw.
<g:each var="c" in="${TreeListe}">
	<ul id="maintree${c.id}">
    <g:remoteLink controller="home" action="loadtree" update="tree${c.id}" id="${c.id}" params="[mode:'toggle']" after="new Ajax.Updater('contentdiv','/xitinx/home/showContent/2529',{asynchronous:true,evalScripts:true,onLoading:function(e){showProgress();}});return false;">
	${c.designation}
	</g:remoteLink><br>
	<li id="tree${c.id}">
	</li>
	</ul>
</g:each>


//Hier wird die jeweilige Liste der Child-Einträge erzeugt und zurückgegeben
import org.grails.tree.*
class HomeController {
	...
        def index = {
            [ TreeListe: Tree.findAllMains()]
        }
	def showContent = {
		render('here we go')
	}
	def loadtree = {
	
		def criteria				= Tree.createCriteria()
		treelist = criteria {
    		and {
    			// die ID wird vom remoteLink übergeben
    			eq("childfromid",params.id.toInteger())
    		}
		}
		render(template:"/treeListTemplate",model:[TreeListe:treelist])
	}
	...
}

//Domain
class Tree {

		Integer			childfromid
		Integer			haschilds
		String			designation
}

//contentTemplate
<div id="contentdiv">
	<h1>My content</h1>
</div>


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "Direkte Aktualisierung verschiedener Templates innerhalb eines Views" der ehemaligen Webseite groovy-forum.de, welche durch einen Serverunfall zerstört wurde. codekicker.de hat viele Konversationen über die beliebte Programmiersprache Groovy und zugehörige Frameworks wie das Grails-Framework retten können.

Hast Du eine Frage zum Thema Groovy, Grails oder allgemein Java? Viele ehemalige groovy-forum.de Mitglieder beantworten dir auf codekicker.de deine Frage! Stelle jetzt eine Frage!

Viele weitere Diskussionen zu Grails und Groovy befinden sich auf der Threadübersicht des alten groovy-forum.de.