2008-03-01から1ヶ月間の記事一覧
Struts2のタグを調べていたら s:component というのが有った。 これはJSPやVelocity、Freemarkerのテンプレートをパーツとして取り込む機能のようだ。試したところ、取り込まれるJSP内部でもValueStackが参照できるし、s:param で仮引数的に渡すことも出来る…
Requestより長くて、Sessionより短い Conversation Scope のアイデアhttps://issues.apache.org/struts/browse/WW-1514なかなか面白そうだ。しかしScopedModelDrivenのスコープの1つとして実装できたほうがスマートじゃないだろうか?あとで検討してみよう。
JavaScriptのライブラリのExt-JSはGWT-Extから使えて見栄えもクールなので良いかと思ったらLicenseがLGPL3.0もしくは商用利用ライセンスだった。 商用利用でオープンソース化できないプロダクトでの利用には、商用ライセンスとしてライセンス購入の必要があ…
JSPでの定形の出力について部品化できないか調べている。 jsp:include は少し違う気がするし、カスタム・タグをJAVAで書くのも違う気がする。テンプレート・エンジンというと、Struts2ではStruts2タグの出力にはFreeMarkerが内部で使われているようだから同…
s:urlタグでURLを作ると きに指定できるオプションで、元の画面を表示した時のパラメータを含んだURLを生成してくれる。 これはこれでありがたい場面もあるが、必要ないときには <s:url id="url_var" action="foo" includeParams="false" /> とすると、余分なパラメータは付かなくなる。</s:url>
2008/3/25:この記事は思い違いの可能性があります。判明しだい訂正します。 2008/3/26:TOMCATをWTPでデバッグモードで起動していると実行やJSPのコンパイルが異常に遅くなる場合がある事が判りました。メモリ設定は下の記事で変えられますが直接の原因では無…
TypeがCLASSの場合がデフォルトなので、Typeは省略できる。 Annotation自体はModelDrivenの場合はModelの当該プロパティに書いた。 keyをプロパティ名にする必要があるようだ。 @TypeConversion(key="custom", converter = "tutorial.MyCustomTypeConverter"…
TypeConversionのパラメータは次のものが指定できる。 パラメータ 必須 デフォルト 備考 key - プロパティ名/キー名 type - ConversionType.CLASS APPLICATION/CLASS rule - ConversionRule.PROPERTY PROPERTY/COLLECTION/MAP/KEY/KEY_PROPERTY/ELEMENT/CREA…
http://www.springframework.org/downloadで落とせます 2月末にリリースされてたみたい。http://static.springframework.org/spring/docs/2.5.x/changelog.txtあまり使ってた部分で変更はなさそう。 とりあえず入れ替えときます。
AnnotationでTypeConverterを利用する場合 @TypeConversion を ModelDriven の getModel または、プロパティのSetメソッドで指定する。TypeConversionには type オプションがあり、 type=ConversionType.APPLICATION と type=ConversionType.CLASS が指定で…
コンバーターをAnnotationベースで指定する場合、Actionのクラスに @Conversion を指定する必要がある。
既存のコードで getInstance などのメソッドを呼んでSingleton を取得するタイプのクラスで、それをSpringのBeanとして管理下に置きたい場合は次のようにすることで実現できた。これでLegacyなSingletonも他のBeanにDIすることが出来るようになる。 package …
グローバルな型変換の登録は xwork-conversion.properties に次のように書くことで認識される。CustomTypeのコンバーターが MyCustomTypeConverter の場合は tutorial.CustomType=tutorial.MyCustomTypeConverterとなる。[変換対象の型]=[コンバーター]これ…
カスタムタイプコンバーターは与えられた文字列の長さを保持するカスタム型への変換とすると次のようになる 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でプロパティで標準型以外を使用したい場合、カスタムのタイプコンバーターを利用できる。カスタムコンバーターは org.apache.struts2.util.StrutsTypeConverter; を実装すればいい。で、文字列からカスタム型、カスタム型から文字列への変換の両方を…
Struts2で標準でサポートされている型変換は次がある。String -- これは無変換boolean / Boolean char / Character int / Integer、 float / Float、long / Long、double / Doubleなどの組み込み型dates -- 日付 arrays -- サポートされる型の配列 collectio…
Browserで入力された値は通常String型でありプログラム内部で扱う型とは異なり変換が必要となる。 Struts2ではTypeConverterという仕組みで変換を行い、これはActionやModelのプロパティのsetter/getterの型とStringの相互変換の事である。 つまり、Struts2…
Client側でも System.out.println で昔ながらのデバッグ文がHostedモードなら上手く出力される。 出力されるのは GWT Shellのウインドウではなく、Eclipseのコンソールである。
JavaScriptのExtというライブラリがあり、リッチなコントロールが結構用意されているっぽい。 http://extjs.com/それをGWTに取り込むプロジェクトがGoogle Code Archive - Long-term storage for Google Code Project Hosting.にあった。Google Code Archive…
GWTのRPCのパラメータにLinkedListを渡そうとしたら渡せなかった。 http://code.google.com/intl/ja/webtoolkit/documentation/jre.htmlのJRE Emulationを見ると確かにLinkedListの記述が無い。 ArrayListはサポートされているようだ。
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の 2.0.11.1 がリリースされていました。 s:urlとs:aタグでのエンコーディングに問題があったようです。 All users are strongly encouraged to upgrade to Struts 2.0.11.1 との事。アップグレードしておきましょう。
GWTがパラメータと返却値のSerialize/Deserializeを面倒見てくれて殆ど問題は無いが、一点注意点としては intやlongなどのObjectではない型は使えないようだ。 String getById( long id )l のようなインターフェースをGWTから呼び出すと、サーバ側では Strin…
GWTのHostedモードのサーバ側は組み込みのTOMCATが動いている。バージョンは 5 なのでStruts2が動くはずだ。 GWTでアプリを開発している最中はHostedモードで作業することが殆どなので、こちらでStruts2を動かしてRPCのサービスもキチンとStruts2のアクショ…
開発をGWTのHostモードで実行しているとプロジェクト直下の .gwt-cache というところにファイルが作られるがこれはプロジェクトのクリーンとかしてもデフォルトではクリーンしてくれない。 ソースをコピーしてきたりしてタイムスタンプが更新されないと、見…
現在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要素が指定できる。これはsource指定が存在しない場合、暗黙で "client" となっているので、client以下のパッケージはJavaScript変換対象となっている。 で、別のところを指定すればそちらも見てくれる…