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レイヤーでデータを連携する仕組みやデータベースとの連携方法を解説することにしましょう。
