XMLファイルによる既定値のカスタマイズ
struts.xmlファイルに<constant>
タグで設定を記述することによって、既定値を変更することが可能です。
例えば、struts.xmlに次のような記述を追加すれば、ResultPathの既定値を変更することができます。
<constant name="struts.convention.result.path" value="/WEB-INF/jsp/"/>
主な既定値
次の表に、主な既定値をまとめました。
設定項目 | 既定値 | 概要 |
struts.convention.result.path | /WEB-INF/content/ | Viewテンプレートのデフォルトディレクトリ |
struts.convention.action.suffix | Action | Actionクラスと認識するためのサフィックス文字列 |
struts.convention.action. disableScanning |
FALSE | Actionクラスを探すために、パッケージをサーチするか否か |
struts.convention.action. mapAllMatches |
FALSE | 「@Actionアノテーション」なしで、メソッドをActionメソッドとして扱うか否か |
struts.convention.action. name.lowercase |
TRUE | アクション名を小文字に変換するかどうか |
struts.convention.action. name.separator |
- | アクション名や、Viewテンプレートの区切り文字 |
struts.convention.package. locators |
action,actions,struts,struts2 | Actionクラスを探すパッケージ名 |
struts.convention.package. locators.disable |
FALSE | 上記で指定したパッケージからのサーチを行うか否か |
struts.convention.exclude. packages |
org.apache.struts.*, org.apache.struts2.*, org.springframework.web.struts.*, org.springframework.web.struts2.*, org.hibernate.* |
Actionクラスのサーチから除外するパッケージ名 |
struts.convention.package. locators.basePackage |
ここで指定したパッケージを起点としてActionクラスをサーチする |
文字化け防止措置
前述した文字化けの対処として、文字コードを変換する方法を紹介します。文字化けは、パラメータの受け渡しで発生しますので、パラメータのセッターのところで、変換処理を行います。
引数の文字列を、getCharacterEncoding
メソッドで取得したリクエストデータの文字コードで変換しています。
public class ZeroAnn extends ActionSupport { ...中略... public void setReplyMsg(String message) { try { HttpServletRequest request = ServletActionContext.getRequest(); this.replyMsg = new String(message.getBytes("iso-8859-1"), request.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { } }
このようにすると、次のように、パラメータに日本語を指定しても、正しく文字がセットされます。
<s:url id ="link" action="ann/zero"> <s:param name="replyMsg">ゼロコンフィギュレーション</s:param> </s:url> <s:a href="%{link}">文字化け応急措置</s:a><br />
<s:property value="replyMsg"/>
で、パラメータで受け取った文字を表示しても、次のように正しく表示されます。
まとめ
今回は、最新バージョンである2.1.6での「Zero Configuration」について解説しました。従来のStrutsに比べ、圧倒的に見通しがよくなったことを実感できたでしょうか。
次回は、Action
クラスとViewレイヤーでデータを連携する仕組みやデータベースとの連携方法を解説することにしましょう。