Wie legen Sie das Gebietsschema in einem benutzerdefinierten Struts 2 ActionMapper

Ich habe implementiert eine benutzerdefinierte ActionMapper, die ruft das Gebietsschema der URI (URI selbst, nicht der request-Parameter). Innerhalb ActionMapper.getMapping(), wie kann ich das Gebietsschema für die aktuelle Aktion?

Hier sind einige Ideen, die ich betrachtet habe:

  • ActionContext.getCurrent().setLocale(). Leider scheint es, dass eine frische neue ActionContext wird erstellt, wenn die Aktion aufgerufen wird, und die locale auf den Standard zurückgesetzt.
  • Setzen Sie den parameter request_locale, die verarbeitet werden, indem Sie die i18n-interceptor. Leider, die i18n-interceptor besteht auf Einstellung der locale nicht nur für die aktuelle Aktion, aber die aktuelle Sitzung zu, die eine Ausnahme wirft, denn die Sitzungen sind nicht aktiviert für meine Anwendung.
  • Einen parameter einstellen und verarbeiten Sie in der Handlung selbst, durch die Umsetzung von setLocale(). Einfach, aber es bedeutet, dass keiner der Abfangjäger haben Sie Zugriff auf das Gebietsschema.
  • Einen parameter einstellen und schreiben Sie eine interceptor (im Grunde das gleiche tun wie die i18n-interceptor, ohne dass session-Unterstützung). Scheint übertrieben für so ein einfaches Problem, nicht zu erwähnen, das Rad neu erfinden möchte.

Gibt es eine einfache Möglichkeit, dies zu erreichen?

  • Wenn Sie das Gebietsschema in Ihrer gesamten Abfangjäger, ich denke, Sie sind stecken, neu zu erfinden das Rad mit einem custom-i18n-interceptor. Ich bin überrascht, dass der ActionContext bekommt neu - ich dachte, deine erste Idee würde gearbeitet haben, zu.
InformationsquelleAutor Todd Owen | 2009-08-18
Schreibe einen Kommentar