Sonderzeichen ö ä ü in Struts2

Tservarius

Mitglied
Hi,

mal wieder eine Struts2 + Hibernate Frage.
Habe eine Suchmaske gebastelt, die Datensätze durchsucht. Das ganze läuft mit Hibernate - bis dahin auch alles super und easy.

Probleme gibt es jedoch, wenn jemand z.B. nach Nachname "Müller" sucht, also ein Sonderzeichen / Umlaut vorhanden ist.

Habe mir mal die Variable im Request angeschaut und aus
Mü wird M?

Der User gibt in einem Form Textfeld seinen Suchstring ein.
Per Enter gehts an die Action, die die Daten zieht und aufbereitt und danach auf die JSP, die die Daten ausgibt.

Ich schätze mal, dass dies nur eine Einstellungssache irgendwo in den Struts Configs sein wird. Wer kann mir sagen wo ? Habe leider in den Docs nichts gefunden.
Falls es keine Einstellungs-Geschichte ist, wie bekomm ich dann die Lösung hin?

Auf der Datenbank selber ist alles wunderbar mit Umlauten abgebildet und auch manuelle SQL Statements führen zum Erfolg.
 
Hallo,
mit welcher Art von Suchmechanismus arbeitest Du denn in Hibernate?

Ich benutze nach Möglichkeit den QbE-Mechanismus. Bei dem ist mir auch schon aufgefallen, dass Hibernate offenbar versucht, bei der Suche mit echten Umlauten ä, ö und ü auch eine Schreibweise ae, oe und ue zu erfassen.

Wenn ich z.B. mit "Mü%" suche, wird sowohl "Müller" als auch "Mueller" gefunden.
Leider hat das seine Grenzen: eine Suche nach "Mül%" findet nur noch "Müller"; auch eine Suche nach "Mu%" hat lediglich "Mueller" zum Ergebnis.

Bis auf diese kleine Eigenart funktioniert die Suche bei mir aber einwandfrei.

MfG
 
Naja.. dies ist nicht so sehr ein Hibernate Problem bei mir, als vielmehr ein Struts Problem denke ich. Hibernate steht bei mir nur als "Datenbasis" dahinter....

Zum Ablauf:
Session wird gestartet, Daten werdena aus Hibernate geladen und in Session Bean geschaufelt. Da bleiben Sie auch stehen und gut.

Wenn nun jemand suhct, iteriere ich über das Session Bean und schau mir die Objekte die dort drinn liegen an. Sucht z..B. jemand nach "Vorname=Mül" werden alle Elemente rausgekickt, die nicht mit Mül beginnen. Bleibt also nur Müller, Müllmann, Müllermilch im Ergebnis / in der folgenden Ausgabe stehen.

Das funktioniert auch alles tip top.

Das Problem liegt halt darin, dass wenn ich im Formularfeld z.b. eingebe "Müllerchen" und mir dann in der Action angucke, was über den Request ankommt, also:

Code:
Request req .....
system.out.println(req.getParameter("suchparameter"));

steht da leider nicht Müllerchen sondern lediglich : M?

sobald also das erste sonderzeichen kommt, scheint Struts irgendwie total durcheinanderzukommen. Daher die Vermutung, dass ich irgendwo in den Configs reinschreiben muss, dass es sich bei dem Projekt um nen DE Projekt, nen UTF8 Projekt oder wat weis ich handelt, damit der Request mit solchen Sonderzeichen klarkommt.

Hoffe nun ist das Problem etwas deutlicher geworden.
 
Ja, den Effekt kenne ich, wenn auch mit Sonderzeichen, die anstelle der Umlaute erscheinen.

Probiere doch mal folgendes.

Im Header jeder JSP-Seite folgende Page-Direktive einsetzen, falls nicht schon geschehen:
Code:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>

Und zusätzlich dem Form-Tag (Struts 2) noch das Attribut "acceptcharset" mitgeben:
Code:
<s:form action="%{actionname}" acceptcharset="utf-8">
...  [Eingabefelder, Buttons etc.]
</s:form>

Das hat bei mir das Problem behoben.

Siehe auch:
http://struts.apache.org/2.0.6/docs/how-do-i-enable-encoding-in-my-forms.html
 

Neue Beiträge

Zurück