ラベル Struts の投稿を表示しています。 すべての投稿を表示
ラベル Struts の投稿を表示しています。 すべての投稿を表示

Struts 2.3.15 の HelloWorld に大切なこと

仕事でStrutsを使うことになったので夜な夜なSample作っていたら、
つまづくところがあったのでメモ。。

Struts 2 の HelloWorld はたくさんの人がアップしているからもういいでしょう。
しかし、Struts 2.2以降は web.xml に追加で記述しないといけないものがあります。
ぼくはこれで3時間以上インターネットで検索しました。

「web.xml」中に追加しなければいけないのは「init-param タグ」ですね。

init-param 中には2つのタグがあって、

・1つ目
 <param-name> 固定で actionPackages を記述

・2つ目
 <param-value>アクションクラスのパッケージ名を記述です。


init-param タグ全体だとこんな感じですね。
-----
<init-param>
<param-name>actionPackages</param-name>
<param-value>part1</param-value>
</init-param>
-----


web.xml 全体だとこんな感じです。
-----
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://
java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher
</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>part1</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>
-----


それにしても黎明期だからでしょうか、Strutsの仕様がよく変更されますね。



今回の記事はこの辺で。






Struts2 のプロパティ(properties)の書き方

ファイル「*****.properties」という、*****部分が任意のファイルを作ります。

そのファイルの中身に「user.age=年齢」などと書きます。

この場合、jspでOGNL式のgettext('user.age')ってやると”年齢”が取れます。



※ちなみに
OGNL式とは、struts2 の機能に含まれる記述式のことで、jspからActionクラスに持っているメソッドを呼び出せる。

例えば、struts2 のjspで記述されたSampleファイルでは、こんな記述があります。
...
<s:textfield label="%{getText('user.age')}" name="user.age"/>
...

これは、プロパティファイルに記載された変数「user.age」に格納されている文字列を読み出して label に格納しています。

これを使うことによってグリッドのラベル名を動的に書けたりするんですね。



話を戻しましょう。

それでは、*****.propertiesってどうやって読み込むのかについて書いておきます。

*****.propertiesの読み込みかた


読み込む方法は4つあってそれぞれ特性があります。

1. Actionクラス名.properties

特性:Actionクラス名←このクラスでしか使えない。


2. Actionクラスの基底クラス名.properties

特性:Actionクラスの基底クラス名←この基底クラスを継承したクラスしか使えない。


3. パッケージ内のpackage.properties

特性:同一のパッケージにあるActionクラスででしか使えない。


4. struts.xmlで指定

特性:全体で使える。管理しやすいのでオススメ。<struts>配下に<constant>を記載して指定する。サンプル書いておく。


4のサンプル
...
<struts>
<constant name="キー" value="*****" />
<package name=...
*****ってのがファイル名です。



★要注意
・拡張子の.propertiesは書かない。
・複数のプロパティを記載する場合はカンマ区切りで記載する。
・キーが重複した場合は、後の記載が有効。



ちなみに、
プロパティファイルを読み込む方法4つを記載しましたが、違う方法で同じキーが記載されていた場合は優先度が高い方法で設定されたプロパティファイルを読み込みます。優先度は記載順に1が最優先です。

例えば、方法1でキーABC、方法2でキーABCの場合は1が読み込まれます。



今回の記事はこの辺で。




上司がクソ野郎になってきた

上司がクソだ。 全然勉強していなくて話が通じなくてクソ REST知らないってどういうことなんだろう。弊社標準になってから久しいJavaをまともに組めないってのはどういうことなんだろう。 計画上では詳細設計フェーズが半分を過ぎようというときに要件定義できていないってのはどう...