CodeLibs Struts

SAStrutsを使っていると、Struts 1.xってEOLされているけど、大丈夫なの?というツッコミを開発者以外のところから飛んでくることがあるかと思います。毎回、このツッコミを受けるのも面倒なので、SAStrutsで利用するStrutsをフォークして提供することにしました。基本は、SAStrutsがEOLとかされるまではサポートし続ける予定です。というわけで、CodeLibs Strutsをご利用ください。CodeLibsのMavenリポジトリより利用可能です。基本的に商用サポートはいらないと思いますが、いろんな事情により必要な場合はご相談ください。

Javaのプロパティファイルでのエスケープ

Javaのプロパティファイルでは、

  • \ → \\
  • ‘ → ”
  • { → ‘{‘
  • } → ‘}’

という感じでエスケープする必要がある。まぁ、これはこれでよくて、でも、Strutsで上記でエスケープしてもうまくいかず、ハマった…。原因は、strtus-config.xmlで定義していたリソースバンドルで上記のエスケープをやろうとしていたところに問題があって、そこでやりたいなら、

<message-resources parameter="application"
factory="org.seasar.struts.util.S2PropertyMessageResourcesFactory">
<set-property property="escape" value="false"/>
</message-resources>

という感じでエスケープをfalseにしてあげる必要がある。

HTML5対応のSAStruts用タグライブラリ

html:〜のタグたちが任意の属性を受け取れなかったり、HTML5的なタグがいなかったりするので、それらに対応したライブラリを作ってみました。コードはここにあります。とりあえずは、html:のタグたちだけですが、必要に応じて追加したいと思います。提供するタグたちはDynamicAttributes化されているので、autocomplete属性とか渡せばスルーして出力されるようになっています。formとlinkはS2FormTagとS2LinkTagを継承しているので、s:〜は使わなくても良いかも。Fessで必要になったので利用していますが、どうぞご利用ください〜。

SAStruts の Maven Archetype 1.0.4-sp9.1 をリリース

SAStruts のサイトにて、Maven Archetype を公開しているのですが、DBFlute がリリースされたので、それに合わせて更新しました。かなり久しぶりのリリースになります。まぁ、Seasar2 自体がたまにしかリリースされないので、更新する理由がないので仕方がありませんが。というわけで、Maven な方は DBFlute Maven Plugin と合わせて、ご利用していただけると嬉しいです。

commons-fileupload 1.2.1を使うには

SASTRUTS-128 で登録したのだけど、SAStruts で commons-fileupload 1.2.1 を使うと、アップロード時に一時ファイルが作成されたら、それを自動削除する機能が動きませぬ。まぁ、そもそもは commons-fileupload が 1.2 から 1.2.1 に上がったときに仕組みを変えるという、結構、大胆な感じなことをやってくれたため。そんなわけで、commons-fileupload 1.2.1 を利用したい場合にはどうすべきか。Fess では早速対応してみた。

まず、FessMultipartRequestHandler みたいなものを用意して、commons-fileupload 1.2.1 に対応する必要がある。これ を参照。そんで、web.xmlに追加する。

<listener>
<listener-class>org.apache.commons.fileupload.servlet.FileCleanerCleanup</listener-class>
</listener>

さらに、struts-config.xmlを以下のように変更しておく。

<controller
maxFileSize="1024K"
bufferSize="1024"
processorClass="org.seasar.struts.action.S2RequestProcessor"
multipartClass="jp.sf.fess.upload.FessMultipartRequestHandler"/>

以上。