goldstift's blogspot my 2 cent

Posts mit dem Label hilfe werden angezeigt. Alle Posts anzeigen
Posts mit dem Label hilfe werden angezeigt. Alle Posts anzeigen

01 Oktober 2011

iPhone: Wartezeit für Rufumleitung bei Abwesenheit setzen

Frage: Wie kann man eigentlich am iPhone die Zeit oder die Anzahl der Klingelzeichen einstellen, die das Telefon wartet, bis ein nicht angenommener Anruf bspw. an die Mailbox weitergeleitet wird?



Antwort:
Diese Weiterleitung nennt man auch "Rufumleitung wenn keine Rufannahme"

Da dies nicht Telefon-spezifisch sondern eine Einstellung in den Systemen des Netzbetreibers ist, gibt es hierfür nicht in jedem Telefon einen Menüpunkt oder eine Einstellungsmöglichkeit. So auch nicht beim Apple iPhone.

Es gibt aber dennoch die Möglichkeit, diese Einstellung über einen sog. GSM-Code zu ändern. Eine Übersicht der meisten Codes gibt es unter http://www.gsmcodes-online.de/
Zur Rufumleitung: http://www.gsmcodes-online.de/Rufumleitungen/rufumleitungen.html

Diese Nummernfolge muss direkt in den Ziffernblock der "Telefon"-App eingetippt werden.

Beispiel "Sprachanrufe nach 30 Sekunden auf die Mailbox umleiten":

**61*MAILBOXNUMMER*11*30#


Meine MAILBOXNUMMER im Telekom-Netz ist z.B. +49151 13 12345678 dementsprechend lautet die ganze Zeichenkette dann

**61*+491511312345678*11*30#


Wie die MailboxNummer bei anderen Providern ist, kann ich leider nicht sagen, man kann aber vorher durch die Eingabe von "*#61#" die aktuelle Einstellung abfragen.

13 Februar 2011

Broken special chars in Spring Roo?

This is the first post in an upcoming series of posts on Spring Roo (see footer for details an Roo).

Problem: Special chars and Umlauts are not correctly displayed in my Roo-Application

[german version]
There are often questions and support requests on the above named topic in Spring Roo-Forum. Mostly questioners write that german "Umlauts" like ä, ö, ü and ß or other special chars in cyrillic are not correctly display or saved to the database. With the following post I'd like to review the most common sources of the problem and come up with solutions.

Encoding of the HTML/ JSP page

Roo generated JSPs are always delivered with UTF-8 encoding. In case you write your additional JSPs by hand, you should assure these pages are also delivered to the browser in UTF-8 encoding so the form data will be correctly send on submit.
This can be achieved by specifying the following line of code at the beginning of each JSP:
<jsp:directive.page contenttype="text/html;charset=UTF-8"
   pageencoding="UTF-8"/>

To show you an example where to exactly put this, the "default.jspx", which serves a frame for all other JSP pages via Apache Tiles, contains the following lines to preserve UTF-8 encoding in the resulting HTML:
<html xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tiles="http://tiles.apache.org/tags-tiles" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" >  
 
 <jsp:output doctype-root-element="HTML" doctype-system="about:legacy-compat" />
 
 <jsp:directive.page contentType="text/html;charset=UTF-8" />  
  
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<!-- ... -->

To check whether your page is delivered in UTF-8 encoding, open it in your browser and have a look at menu "View > Character Encoding".

CharacterEncodingFilter in web.xml file

This is the most common point of failure. We're talking about the order in which the <filter-mapping>-Tags occur in your "src/main/webapp/WEB-INF/web.xml". These tags define in which order the filters are executed on each HTTP-Request.
Roo generates the correct order since Version 1.1.1! Previous versions are still buggy.

The correct order looks like the following:
<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>HttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

In case you want to change the order it is important to understand at least a minimum of the inner workings of these filters:
To avoid problems with the encoding of your special chars, "CharacterEncodingFilter" has to be run before any other filter has worked on the request data!
For this reason the general advice is: the <filter-mapping> for CharacterEncodingFilter has to be at the first position in your "web.xml" (See ROO-1698 for an explanation - the charset CANNOT be set to the request after the InputStream has been read)!

Database connection

The last point is to assure that your application communicates with the database via unicode with a default encoding of UTF-8.

As Roo generates the correct connection string for MySQL since "the early days" there haven't been many bugs with this lately.
The connection string can be configured in "src/main/resources/META-INF/spring/database.properties" and looks like the following for MySQL:
database.url=jdbc:mysql://[YOUR_DB_SERVER]:3306/[YOUR_DB_NAME]?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8

Conclusion

Since version 1.1.1 Spring Roo provides a (by now) bug free support for special chars and umlauts, which as been tested with various languages worldwide.

If you have any questions on Spring Roo or the topic named above you can find competent assistance in the Roo-Forum.

References/ Links used in the text


Spring Roo is a Code-Generation-Tool for Software development in Java. It is a lightweight developer tool that makes it fast and easy to deliver instant results. Best of all, you code 100% in Java and get to reuse all your existing Java knowledge, skills and experience.

There are already many Add-Ons available to customize Roo to your special needs. In case you don't find an Add-On that fits your needs, you can easily create your own Add-On in just a few steps.

10 Februar 2011

Umlaute und Sonderzeichen in Spring Roo?

Dies ist der erste in einer Reihe von Blog-Posts über Spring Roo (Erläuterung siehe unten).
[english version]

Problem: Sonderzeichen und Umlaute werden in meiner Roo-Anwendung nicht korrekt angezeigt


Im Spring Roo-Forum gibt es öfter Anfragen, die o.g. Problem beschreiben, dass deutsche Umlaute wie ä, ö, ü und ß nicht korrekt gespeichert oder "kaputt" übertragen werden. Im Folgenden möchte ich kurz die häufigsten Fehlerquellen und Lösungen aufzeigen.

Zeichensatz der HTML-/ JSP-Seite

Durch Roo generierte JSPs werden immer im Zeichensatz UTF-8 ausgeliefert. Schreibt man eigene JSPs bspw. mit Formularen, sollte diese HTML bzw. JSP-Seite als Zeichensatz ebenfalls UTF-8 verwenden. Dies erreicht man in dem am Anfang der JSP die folgende Zeile eingefügt wird:
<jsp:directive.page contenttype="text/html;charset=UTF-8"
   pageencoding="UTF-8"/>

Am Anfang der "default.jspx", die über Apache Tiles als "Rahmen" für alle anderen JSP-Seiten gilt, sind z.B. folgende Angaben zum Encoding/ Zeichensatz enthalten:
<html xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:tiles="http://tiles.apache.org/tags-tiles" xmlns:spring="http://www.springframework.org/tags" xmlns:util="urn:jsptagdir:/WEB-INF/tags/util" >  
 
 <jsp:output doctype-root-element="HTML" doctype-system="about:legacy-compat" />
 
 <jsp:directive.page contentType="text/html;charset=UTF-8" />  
  
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<!-- ... -->

Ist sichergestellt, dass die Seiten im Zeichensatz "UTF-8" ausgeliefert werden (dies kann im Browser meist im Menüpunkt "Ansicht > Zeichensatz" kontrolliert werden), die Sonderzeichen werden aber trotzdem falsch übertragen, ist dies nicht die Fehlerursache.

CharacterEncodingFilter in der web.xml

Dieser Punkt ist der häufigste Fehler. Es geht hierbei um die Reihenfolge der <filter-mapping>-Tags in der Datei "web.xml". Diese Tags geben an, in welcher Reihenfolge die einzelnen Filter bei einem HTTP-Request durchlaufen werden.
Roo generiert leider erst seit Version 1.1.1 per Default die korrekte Reihenfolge, wie folgt aussieht:

<filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>Spring OpenEntityManagerInViewFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>HttpMethodFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Will man die Reihenfolge der Filter ändern, ist es wichtig, deren Bedeutung zu verstehen:
Damit Fehler in der Behandlung von Texten mit Sonderzeichen ausgeschlossen werden, sollte der "CharacterEncodingFilter" durchlaufen worden sein, bevor die Requestdaten in irgendeiner Form weiterverarbeitet werden.
Aus diesem Grund lautet die Empfehlung: das <filter-mapping> für den CharacterEncodingFilter muss in der "web.xml" an erster Stelle stehen (Erklärung siehe ROO-1698)!

Datenbankverbindung

Zu guter Letzt sollte sichergestellt werden, dass auch die Kommunikation mit der Datenbank über Unicode bzw. mit dem Standardzeichensatz UTF-8 geführt wird.

Kommt als Datenbank bspw. MySQL zum Einsatz, generiert Roo automatisch die Unicode-Unterstützung über folgende Konfiguration in der Datei "src/main/resources/META-INF/spring/database.properties":
database.url=jdbc:mysql://[YOUR_DB_SERVER]:3306/[YOUR_DB_NAME]?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8

Fazit

Seit Version 1.1.1 verfügt Spring Roo über eine (bisher) fehlerfreie Unterstützung für Sonderzeichen, die bereits in diversen Sprachen getestet wurde.
Bei Fragen und Problemen findet man im Roo-Forum auf jeden Fall kompetente Hilfe.

Im Text verwendete, weiterführende Links


Spring Roo ist ein Code-Generierungs-Werkzeug für die Softwareentwicklung, welches Entwickler in die Lage versetzt schnell und unkompliziert vorzeigbare Ergebnisse bspw. in Form von benutzbaren Prototypen zu liefern. Im Gegensatz zu anderen Werkzeugen, Frameworks und Tools entwickelt man mit Spring Roo zu 100% in Java.

Für die Anpassung oder Erweiterung von Roo bspw. durch eigene Add-Ons kann auf vorhandenes Java-Wissen und -Erfahrung aufgebaut werden. Unterstützt durch die geringen Einstiegshürden und die hohe Modularisierung, kann so jedes Projekt leicht an die ganz speziellen, individuellen Bedürfnisse angepasst und einmal geschriebene Komponenten oder Add-Ons wiederverwendet werden.

Update 12.02.2011 23:50h:
  • Frage eingearbeitet: "Setzt Roo diese Einstellungen automatisch oder muss man diese selbst anpassen?" - siehe Fazit
  • verschiedene Verbesserungsvorschläge eingearbeitet und Tippfehler korrigiert