2008-01-01から1年間の記事一覧

s:actionによる他のアクションの実行3

Struts2で他のアクションを呼び出す方法として s:action によるものがあるが、この機能の便利なところは元々のアクションに渡されたパラメータが全て s:action で呼び出したアクションにもデフォルトで渡されるということだ。これで、呼び出すアクションに一…

s:actionによる他のアクションの実行2

Struts2のJSP中でs:actionにより他のアクションを実行し、ValueStackを参照可能だが、結果のresultは実行されていない。 実行するためには executeResult="true" とする、こうすると出力内容が取り込まれる。ただし、HTMLのヘッダータグなどを出力していると…

s:actionによる他のアクションの実行

Struts2のJSP中でs:actionタグを使用すると他のアクションを実行して、その結果のValueStackを参照したり結果の出力を取り込んだりすることが出来る。まずValueStackを参照する場合id属性で変数名を指定すれば、その変数経由で呼び出したアクションのValueSt…

s:componentでの部品

s:component でJSPやHTML出力の部品化を行うことが出来るが、部品の中でFORM要素を使用する場合 はフォーム要素のタグの属性で templateDir や theme をFORM要素のものに戻してあげないと出力がされないので注意が必要だ。templateDirやthemeをちゃんと指定…

s:componentで部品を呼び出す

s:componentで呼び出すときにparameterを渡すことが出来る。呼び出し元と同じValueStackが参照できるのでどれ位意味が有るか不明だが次のようにする。 <s:component templateDir="parts" theme="simple" template="sample.jsp"> <s:param name="firstName" value="'fooFirst'"/> <s:param name="lastName" value="'fooLast'"/> </s:component> としてsample.jsp側では <%@page contentType…

s:componentタグによるJSPの部品化

s:componentタグによってJSPを部品化する事がある程度できる。templateDirとthemeとtemplateで{templateDir}/{theme}/{template}のようなパスになるのでその場所にJSPを置いて呼び出せばいい例えば <s:component templateDir="parts" theme="simple" template="sample.jsp"/> こうした場合WebContents/parts/simple/sample.jspが呼び</s:component>…

DefaultWorkflowInterceptorのvalidation

DefaultWorkflowInterceptorは次の事を行う。 Validatable が実装されているアクションに対して validate() の呼び出し ValidationAware が実装されているアクションに対して、 hasErrors() によりエラーをチェックしエラーならActionを実行せずに戻りとして…

s:iteratorタグのstatus

Struts2での繰り返し処理のタグの s:iterator で属性status を指定すると、繰り返しの状態を取得できる。次のようにすると rs という変数が status になる <s:iterator value="listElements" status="rs"> statusは次のようなプロパティを参照できる 補足 例 index 何行目か 0からの数値 #rs.index count </s:iterator>…

s:includeについて

Struts2のカスタムTagに s:incldue というのがある。 こちらは s:component と違い、 s:param で指定されたValueStackにはアクセスできないようだ。 しかしこちらのページhttp://struts.apache.org/2.0.11.1/docs/include.htmlのExsampleにはparamで渡せるよ…

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のコンソールである。