| 

.NET C# Java Javascript Exception

dynamsich erzeugte Zeilen und deren einträge ändern

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.


dynamsich erzeugte Zeilen und deren einträge ändern

cleo - 11.04.2008 10:41
Holla,

ich hab mal wieder ein kleines problemchen und steig da nich so ganz dahinter.. und zwar habe ich folgendes Szenario:

Ein System kann bis zu 3 IPs, MACs etc. haben.. also die Netzwerdaten zu dem Rechner möchte ich quasi zuordnen.
Um die Erfassung zu erleichtern habe ich die Systemviews so angepasst, dass ich dort gleich die IPs etc. angeben kann. Im SystemController speicher ich dann die Daten.
Soweit so gut.. das funktioniert auch so wie es soll und wie ich es gerne hätte.

Das Problem ist nu das editieren. Wenn ich die Seite aufrufe habe ich ja schon Netzwerkeinträge und diese schreibe ich dann in die Zeilen. Mein problem liegt darin, dass ich es ums verrecken nicht hinkriege die Daten quasi sinnvoll zu schachtel bzw. wieder darauf zu zu greifen, damit ich die im Controller richtig bearbeiten kann.

ich würde es ansich gesehen so ordnen (zwecks performance)

System.Netzwerk.1->ip, mac, .....
System.Netzwerk.2->ip, mac, .....

Wobei die Zahl die ID von den einträgen darstellt.

Mein view sieht immo so aus:
<%i=0%><h1>${i}</h1>
   <g:each in="${hwsystem.networks}" var="nw">
      <g:if test="${nw.isVI == true}">
       <%i++%>
       <input type="hidden" name="network_id${i}" value="${nw.id}">
	<tr>
	   <td><input type="text" maxlength="50" id="n_Ip" name="networks.${nw.id}.ip" value="${nw.n_Ip}"/></td>
	   <td><input type="text" maxlength="50" id="n_Mac" name="networks.${nw.id}" value="${nw.n_Mac}"/></td>								
         </tr>
       </g:if>
</g:each>

lass ich mir das mit render params.networks mal ausgeben kommt folgendes raus


["1.ip":"ip1", "1.mac":"mac1", "2":["mac":"mac2", "ip":"ip2"], "2.mac":"mac2", "1":["mac":"mac1", "ip":"ip1"], "2.ip":"ip2"]

Und das find ich irgendwie arg seltsam.. hatte dann probiert mit each irgendwie sinnvoll auf die eigentlichen daten zu kommen ("ip1, mac1 sowie ip2, mac2 sind eingegeben daten) was mir aber nich wirklich gelingen will.

Vielleicht hat jmd nicht so ein brett vorm kopf wie ich immo.. was ich (so glaube ich) eigentlich brauche wären die maps:

["1":["mac":"mac1", "ip":"ip1"],"2":["mac":"mac2", "ip":"ip2"]]

Aber k.a. wie ich das im view angeben soll...

Gruß Sandra


Re: dynamsich erzeugte Zeilen und deren einträge ändern

cleo - 14.04.2008 07:33
Wenn ich über hwsystem.networks gehe, hätte ich die Einträge der hwsystem.networks.. was totaler quatsch wäre, da es um die editierfunktion geht.. da hilft es nix, wenn ich über den "alten" datensatz wandere..

@milkyman:
das ist tatsächlich n tipfehler.. :)
Ansich hab ich dann tatsächlich das gewollte ergebnis, ich kann nur nicht so wirklich auf die Werte.. er kennt quasi dann mac und ip nicht.. was ich selbst etwas seltsam finde... muss ich noch mal rumspielen..

Wenn ich per
		params.networks.each{
			key, value->
			render "key: " + key + " value: " + value +"<br>"

		}

durchgehe schmeisst er mir das ergebnis:
key: 1.ip value: IP000012
key: 1.mac value: MAC000012
key: 2 value: [mac:MAC0002, ip:IP0002]
key: 2.mac value: MAC0002
key: 1 value: [mac:MAC000012, ip:IP000012]
key: 2.ip value: IP0002

und ab da is doof... , weil ich nich wirklich weiss, wie ich auf die values komme über den namen.. aber egal was ich mache (noch eine each rein oder ähnliches.. mac und ip kennt er nich..


Re: dynamsich erzeugte Zeilen und deren einträge ändern

panther - 14.04.2008 09:07
Ich bin mir wirklich nicht sicher deinen Code und deinen Beitrag verstanden zun haben aber ich dachte du bietest dem Benutzer die Möglichkeit die "alten" Datensätze zu editieren. Wenn 1 und 2 in dem Beispiel jeweils die ID der beiden Testdatensätze sind (bin mir nicht sicher), dann kannst du wenn du über die hwsystem.systems iterierst, mittels der jeweiligen ID in der Art:
def aktuelleDatensatzID = nw.id as String // "1"
def meineWerte = params[aktuelleDatensatzID] // ["mac":"mac1", "ip":"ip1"]
//hier neue Werte zuweisen
auf die vom Benutzer editierten Werte zugreifen.


Re: dynamsich erzeugte Zeilen und deren einträge ändern

panther - 17.04.2008 22:07
dann vielleicht so:
 def meineParams = params.findAll{ entry,value -> value instanceof Map }


Re: dynamsich erzeugte Zeilen und deren einträge ändern

cleo - 21.04.2008 12:23
Ich habs. das mit dem instanceofMap ist schon mal nich verkehrt gewesen.
Es sieht immo so aus:

	  params.networks.each{ key, value->
		if (value instanceof Map)
		{	render "<br><br>"+ value.ip+ "<br><br>"
			
		}
			
	  }

Somit lande ich auf den richtigen werten und kann sie dann entsprechend auch weiterverarbeiten. Danke für die Eingebung :)

Grüßle Sandra


Stelle deine Groovy-Frage jetzt!


Diese Seite zeigt den Thread "dynamsich erzeugte Zeilen und deren einträge ändern" 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.