map keys umbenennen

ruutaiokwu

Top Contributor
hallo zusammen,

dummerweise unterscheidet der tomcat zwischen gross- und kleingeschreibenen post/get feldern. das ist NICHT rfc-konform!

und in 2 weiteren punkten muss ich HttpServletRequest.getParameterMap() kritisieren:

- nicht typisiert
- sollte ein sortedmap sein, wenn man das ganze zeugs am bildschirm auflisten will! vor allem, wenn man für form-fields-namen präfixe verwendet... na gut, kann man auch selber sortieren...

frage mich manchmal, was die sich überlegen...??!

wie gesagt muss ich halt selber sortieren (das funktioniert soweit!) und auf die names toLowerCase anwenden:

Java:
private RFCConformParameterWrapper(final Map<?, ?> caParameterMap)
    {
        this.cmParameterMap = (Map<String, String>) SortMap.getTreeMapAsMap(MapCaster.castMap(caParameterMap, String.class, String.class));

        Iterator<?> parameterMapIterator = this.cmParameterMap.keySet().iterator();

        while (parameterMapIterator.hasNext())
        {
            final Object next = parameterMapIterator.next();

            String key = next.toString();
            final String value = this.cmParameterMap.remove(key).toString();
            key = key.toLowerCase();
            

            
            this.cmParameterMap.put(key, value);
            
            System.out.println("key: " + key + ", value: " + value);
        }
    }


das funktioniert aber so nicht, erhalte immer eine ConcurrentModificationException, bin aber nicht in keinem multithread-kontext?

begreiffe das nicht ganz...


grüsse, jan
 
M

maki

Gast
dummerweise unterscheidet der tomcat zwischen gross- und kleingeschreibenen post/get feldern. das ist NICHT rfc-konform!
Tomcat hat damit nix am Hut, der interessiert sich nciht wirklich für die Felder deiner Formulare.
Java ist Case Sensitive.

und in 2 weiteren punkten muss ich HttpServletRequest.getParameterMap() kritisieren:

- nicht typisiert
- sollte ein sortedmap sein, wenn man das ganze zeugs am bildschirm auflisten will! vor allem, wenn man für form-fields-namen präfixe verwendet... na gut, kann man auch selber sortieren...
- Typisiert wäre einfach: sind immer Strings
- SortedMap braucht man nicht,weil kein Normaler Mensch das "am Bildschrim ausgeben" will, und wenn doch, dann sortiert er eben vorher, ist ja nciht so dass das üblich wäre.

frage mich manchmal, was die sich überlegen...??!
Ganz einfach: Nachdenken, dann schreiben.

das funktioniert aber so nicht, erhalte immer eine ConcurrentModificationException, bin aber nicht in keinem multithread-kontext?

begreiffe das nicht ganz...
Hier ein Anfängerkurs zu Collections: Trail: Collections (The Java™ Tutorials)
 

ruutaiokwu

Top Contributor
hallo maki,

zu punkt 1: was ist höher zu gewichten? java-sprachstandards, oder rfc-konformität? (ist das nicht eine gute frage...?) wenn der tomcat in allen punkten rfc-konform wäre, wäre es doch egal ob die felder im request gross- oder kleingeschreiben sind... resp. egal, wie man diese anspricht. oder nicht?

zu punkt 2: gut, dann verwendet man halt Object.toString(). oder explizites casting... na ja... bei der SortedMap gebe ich mich geschlagen... würde nur unnötig leistung verbraten, wenn es gar nicht gebraucht wird...

zu punkt 3: nur weil das halt die entwickler sind, welche tomcat entwickelt haben, sind deren idee/ansätze/verfahren für mich noch lange NICHT ABSOLUT...

zu punkt 4: danke für den link. habe mitterweilen eine andere lösung gefunden. (verfüge leider nicht die zeit, um mich in dieser doku durchzukämpfen) werde bei das gelegenheit sicher anschauen, ist ja schliesslich "anfängerzeug", und dieses anfängerzeug sollte ich innehaben...;-)


gruss, jan
 
M

maki

Gast
zu punkt 1: was ist höher zu gewichten? java-sprachstandards, oder rfc-konformität? (ist das nicht eine gute frage...?) wenn der tomcat in allen punkten rfc-konform wäre, wäre es doch egal ob die felder im request gross- oder kleingeschreiben sind... resp. egal, wie man diese anspricht. oder nicht?
Atme nochmals durch und sage dann leise vor dich hin: Java ist Case Sensitive, Java ist Case Sensitive, Java ist Case Sensitive, ....
Das ist so, kann man nicht ändern, liegt auhc nciht am Tomcat wie gesagt.
Von welchem RFC genau sprichst du überhaupt?

zu punkt 2: gut, dann verwendet man halt Object.toString(). oder explizites casting... na ja... bei der SortedMap gebe ich mich geschlagen... würde nur unnötig leistung verbraten, wenn es gar nicht gebraucht wird...
Eben :)

zu punkt 3: nur weil das halt die entwickler sind, welche tomcat entwickelt haben, sind deren idee/ansätze/verfahren für mich noch lange NICHT ABSOLUT...
Schon klar, aber deine Aussagen entbehren eben den Grundlagen, die du offensichtlich nicht kennst.
Urteilen/Bewerten ist immer ganz einfach, besonders ohne Ahnung ;)
Ist nämlich bei GlassFish, Jetty, etc. genauso, oder kurz: Bei jedem Java ServletContainer, weil die eben Java verwenden ;)

zu punkt 4: danke für den link. habe mitterweilen eine andere lösung gefunden. (verfüge leider nicht die zeit, um mich in dieser doku durchzukämpfen) werde bei das gelegenheit sicher anschauen, ist ja schliesslich "anfängerzeug", und dieses anfängerzeug sollte ich innehaben...
Solltest du innehaben, aber offensichtlich tust du das nicht, deswegen der Link.
Tipp: Iterator bietet ein "remove" ;)
 

ruutaiokwu

Top Contributor
1. "Atme nochmals durch und sage dann leise vor dich hin: Java ist Case Sensitive, Java ist Case Sensitive, Java ist Case Sensitive, ...."

ok...:)

habe ich hier gelesen: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 -> "Field names are case-insensitive."



3. "Ist nämlich bei GlassFish, Jetty, etc. genauso, oder kurz: Bei jedem Java ServletContainer, weil die eben Java verwenden"

danke für den hinweis, habe das nicht gedacht. geringfügig unterscheiden sich die app server teilweise, habe gedacht dass dies z.b. genau bei diesem request-field-namen der fall sein könnte...


4. nochmals danke für diesen tipp!
 

Orolhawion

Aktives Mitglied
eine ConcurrentModificationException fliegt immer dann, wenn du die liste veränderst während du über sie iterierst. das passiert bei dir in zeile 12 bzw. 17. lösen kann man das z.b. so, dass man die sich die relevanten listenelemente beim durchlaufen in einer temporären liste merkt und nach dem iterieren die gewünschte aktion ausführt.

Edit: das mit dem Iterator tip hatte ich nicht gesehen.

oben stehendes könnte man benutzen, wenn man ohne Iterator objekt über die liste iteriert, z.B. mit
Java:
for (MyObject current : myList) {
    // ...
}
 
Zuletzt bearbeitet:
M

maki

Gast
habe ich hier gelesen: RFC 2616 - Hypertext Transfer Protocol -- HTTP/1.1 -> "Field names are case-insensitive."
Das ist imho eher etwas für den Browser und das HTTP Protokoll an sich, aber nciht für eine Serveranwendung, die diese Daten auswerted.

Wie dem auch sei, Java ist nunmal Case Sensitive, da führt kein Weg daran vorbei, zB. wird ein Java ServletContainer eine 404 Meldung liefern, wenn die url eine Datei namens "servus.html" angibt, der Server aber nur eine Datei names "Servus.html" kennt.
 

ruutaiokwu

Top Contributor
hallo zusammen,

danke für eure feedbacks!

gruss, jan

p.s.: "bin aber nicht in keinem multithread-kontext?" -> hahahahah! muss gerade ab mir selber lachen, doppelte verneinung, das invertiert sich ja wieder... im stress halt...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
C HashMap - alle keys haben values der letzten put-Anweisung Java Basics - Anfänger-Themen 3
N if 2 keys pressed Java Basics - Anfänger-Themen 3
D HashMap Keys durchlaufen Java Basics - Anfänger-Themen 2
M HashMap keys ausgeben Java Basics - Anfänger-Themen 2
F Eigene Klasse für die Keys von HashMap Java Basics - Anfänger-Themen 5
P Fehlersuche bzgl. Array-Keys Java Basics - Anfänger-Themen 6
D gesucht: Map nur mit doppelten Keys Java Basics - Anfänger-Themen 10
J Public / Private Keys speichern bzw. lesen? Java Basics - Anfänger-Themen 8
J Eine Map wie LinkedHashMap aber mit doppelten Keys? Java Basics - Anfänger-Themen 9
G HashMap durchlaufen und alle keys mit values ausgeben Java Basics - Anfänger-Themen 4
S KeyListener soll IMMER die keys registrieren -> ? Java Basics - Anfänger-Themen 2
G [Hilfe] Keys aus einer Map auslesen? Wie? Java Basics - Anfänger-Themen 3
G die keys einer Hashtable sortieren Java Basics - Anfänger-Themen 15
B Map die keys mehrmals aufnimmt Java Basics - Anfänger-Themen 4
M Variablen umbenennen Java Basics - Anfänger-Themen 1
Henri Mehrere Ordner umbenennen Java Basics - Anfänger-Themen 11
S Dateien mittels Path(s) kopieren und umbenennen. Java Basics - Anfänger-Themen 4
S Ordner umbenennen mit renameTo - mysteriöses Problem Java Basics - Anfänger-Themen 9
D Dateien umbenennen --> verschieben Java Basics - Anfänger-Themen 4
M jar-Datei einfach umbenennen? Java Basics - Anfänger-Themen 8
J Checkboxen umbenennen Java Basics - Anfänger-Themen 3
G Datei in Java umbenennen Java Basics - Anfänger-Themen 4
G Umbenennen im JTree Java Basics - Anfänger-Themen 5
G Datei umspeichern und umbenennen Java Basics - Anfänger-Themen 5
E AbstractAction umbenennen Java Basics - Anfänger-Themen 7
T Problem beim Umbenennen Java Basics - Anfänger-Themen 5
R Datei kopieren und umbenennen Java Basics - Anfänger-Themen 14
H Umbenennen von Dateien Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben