2008-03-01から1ヶ月間の記事一覧

JSPパーツの部品化の方法(再)

Struts2のタグを調べていたら s:component というのが有った。 これはJSPやVelocity、Freemarkerのテンプレートをパーツとして取り込む機能のようだ。試したところ、取り込まれるJSP内部でもValueStackが参照できるし、s:param で仮引数的に渡すことも出来る…

Conversation Scope

Requestより長くて、Sessionより短い Conversation Scope のアイデアhttps://issues.apache.org/struts/browse/WW-1514なかなか面白そうだ。しかしScopedModelDrivenのスコープの1つとして実装できたほうがスマートじゃないだろうか?あとで検討してみよう。

Ext-JSのライセンス

JavaScriptのライブラリのExt-JSはGWT-Extから使えて見栄えもクールなので良いかと思ったらLicenseがLGPL3.0もしくは商用利用ライセンスだった。 商用利用でオープンソース化できないプロダクトでの利用には、商用ライセンスとしてライセンス購入の必要があ…

JSPパーツの部品化の方法

JSPでの定形の出力について部品化できないか調べている。 jsp:include は少し違う気がするし、カスタム・タグをJAVAで書くのも違う気がする。テンプレート・エンジンというと、Struts2ではStruts2タグの出力にはFreeMarkerが内部で使われているようだから同…

s:urlのincludeParams

s:urlタグでURLを作ると きに指定できるオプションで、元の画面を表示した時のパラメータを含んだURLを生成してくれる。 これはこれでありがたい場面もあるが、必要ないときには <s:url id="url_var" action="foo" includeParams="false" /> とすると、余分なパラメータは付かなくなる。</s:url>

EclipseのWTPでJSPコンパイルが遅い

2008/3/25:この記事は思い違いの可能性があります。判明しだい訂正します。 2008/3/26:TOMCATをWTPでデバッグモードで起動していると実行やJSPのコンパイルが異常に遅くなる場合がある事が判りました。メモリ設定は下の記事で変えられますが直接の原因では無…

TypeがCLASSのコンバーター

TypeがCLASSの場合がデフォルトなので、Typeは省略できる。 Annotation自体はModelDrivenの場合はModelの当該プロパティに書いた。 keyをプロパティ名にする必要があるようだ。 @TypeConversion(key="custom", converter = "tutorial.MyCustomTypeConverter"…

@TypeConversionのパラメータ

TypeConversionのパラメータは次のものが指定できる。 パラメータ 必須 デフォルト 備考 key - プロパティ名/キー名 type - ConversionType.CLASS APPLICATION/CLASS rule - ConversionRule.PROPERTY PROPERTY/COLLECTION/MAP/KEY/KEY_PROPERTY/ELEMENT/CREA…

Springが2.5.2になってました

http://www.springframework.org/downloadで落とせます 2月末にリリースされてたみたい。http://static.springframework.org/spring/docs/2.5.x/changelog.txtあまり使ってた部分で変更はなさそう。 とりあえず入れ替えときます。

ActionでのTypeConversion

AnnotationでTypeConverterを利用する場合 @TypeConversion を ModelDriven の getModel または、プロパティのSetメソッドで指定する。TypeConversionには type オプションがあり、 type=ConversionType.APPLICATION と type=ConversionType.CLASS が指定で…

AnnotationベースでのConverter指定

コンバーターをAnnotationベースで指定する場合、Actionのクラスに @Conversion を指定する必要がある。

LegacyなSingletonの取り込み

既存のコードで getInstance などのメソッドを呼んでSingleton を取得するタイプのクラスで、それをSpringのBeanとして管理下に置きたい場合は次のようにすることで実現できた。これでLegacyなSingletonも他のBeanにDIすることが出来るようになる。 package …

Struts2へのTypeConverterの登録

グローバルな型変換の登録は xwork-conversion.properties に次のように書くことで認識される。CustomTypeのコンバーターが MyCustomTypeConverter の場合は tutorial.CustomType=tutorial.MyCustomTypeConverterとなる。[変換対象の型]=[コンバーター]これ…

Struts2のカスタムタイプコンバーター

カスタムタイプコンバーターは与えられた文字列の長さを保持するカスタム型への変換とすると次のようになる package tutorial; import java.util.Map; import org.apache.struts2.util.StrutsTypeConverter; public class MyCustomTypeConverter extends Str…

ホットコード置換

EclipseのWTPでTOMCATをローカル実行すれば、アプリケーションのデバッグが出来る。ホットコード置換機能もあるのでデバッグ中にコードを変更すれば即座に反映される。しかしデフォルトではTOMCATのContext設定の reloadable が true となっているため、コー…

配列のプロパティ

カスタム変換のプロパティが配列の場合、配列の要素分変換が呼び出されるようになっている。

カスタムコンバーターの引数

Struts2のカスタムコンバーターでは次のメソッドを用意する必要があるが、 public Object convertFromString(Map arg0, String[] arg1, Class arg2); こちらの arg1 の配列(String[]) の引数がどういう内容で呼び出されるのかは、プログラムで使用されている…

Struts2のTypeConverterを書く

Struts2でプロパティで標準型以外を使用したい場合、カスタムのタイプコンバーターを利用できる。カスタムコンバーターは org.apache.struts2.util.StrutsTypeConverter; を実装すればいい。で、文字列からカスタム型、カスタム型から文字列への変換の両方を…

Struts2の標準のTypeConverter

Struts2で標準でサポートされている型変換は次がある。String -- これは無変換boolean / Boolean char / Character int / Integer、 float / Float、long / Long、double / Doubleなどの組み込み型dates -- 日付 arrays -- サポートされる型の配列 collectio…

Struts2のType Converterの登録場所

Browserで入力された値は通常String型でありプログラム内部で扱う型とは異なり変換が必要となる。 Struts2ではTypeConverterという仕組みで変換を行い、これはActionやModelのプロパティのsetter/getterの型とStringの相互変換の事である。 つまり、Struts2…

GWTでSystem.out.println

GWT

Client側でも System.out.println で昔ながらのデバッグ文がHostedモードなら上手く出力される。 出力されるのは GWT Shellのウインドウではなく、Eclipseのコンソールである。

JavaScriptのExtライブラリ

GWT

JavaScriptのExtというライブラリがあり、リッチなコントロールが結構用意されているっぽい。 http://extjs.com/それをGWTに取り込むプロジェクトがGoogle Code Archive - Long-term storage for Google Code Project Hosting.にあった。Google Code Archive…

GWTではLinkedListが使えない

GWT

GWTのRPCのパラメータにLinkedListを渡そうとしたら渡せなかった。 http://code.google.com/intl/ja/webtoolkit/documentation/jre.htmlのJRE Emulationを見ると確かにLinkedListの記述が無い。 ArrayListはサポートされているようだ。

GWTのHostedモードでStruts2実行

tomcat/webapps/ROOT/WEB-INF/web.xml に <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>*.action</url-pattern> </filter-mapping> を記述すればStruts2は動いた。必要に迫られたの…

Struts2セキュリティアップデート

Struts2の 2.0.11.1 がリリースされていました。 s:urlとs:aタグでのエンコーディングに問題があったようです。 All users are strongly encouraged to upgrade to Struts 2.0.11.1 との事。アップグレードしておきましょう。

GWTのRPCでの注意点

GWTがパラメータと返却値のSerialize/Deserializeを面倒見てくれて殆ど問題は無いが、一点注意点としては intやlongなどのObjectではない型は使えないようだ。 String getById( long id )l のようなインターフェースをGWTから呼び出すと、サーバ側では Strin…

GWTのHostedモードでのStruts2

GWTのHostedモードのサーバ側は組み込みのTOMCATが動いている。バージョンは 5 なのでStruts2が動くはずだ。 GWTでアプリを開発している最中はHostedモードで作業することが殆どなので、こちらでStruts2を動かしてRPCのサービスもキチンとStruts2のアクショ…

GWT開発での注意点

GWT

開発をGWTのHostモードで実行しているとプロジェクト直下の .gwt-cache というところにファイルが作られるがこれはプロジェクトのクリーンとかしてもデフォルトではクリーンしてくれない。 ソースをコピーしてきたりしてタイムスタンプが更新されないと、見…

Struts2のGWT用プラグインの問題

現在Struts2とGWTの連携用に Google Code Archive - Long-term storage for Google Code Project Hosting. の 最新版 0.2.1 を利用しているが、このプラグインが開発された当時は GWTは 1.3 で、現在の 1.4 で利用できるRPCのデータ型が IsSerializable では…

GWTの gwt.xml の source要素

GWT

GWTのモジュール設定用ファイル .gwt.xml の中で source要素が指定できる。これはsource指定が存在しない場合、暗黙で "client" となっているので、client以下のパッケージはJavaScript変換対象となっている。 で、別のところを指定すればそちらも見てくれる…