• SAStrutsのHTML5対応 その3

    2015年06月18日 01時04分
    taglib-html5_1_2_9_2.zip

    ナウなHTML5で必要な属性が足りていなかったのでいくらか足しました。
    • textareaタグ
      • maxlength属性
      • wrap属性

    やはり無条件に全て受け入れてそのまま出すというのが正解だった気がしますが今更後には引けない。

    というか、これJava1.3のソースをtarget=Java1.2で作っているのですが、
    Java9以降は3バージョンくらい古いバージョンしかサポートしてくれない予定のようなので
    さすがにそろそろ延命措置も厳しい気がします。
  • Javaで文字種を指定してURLエンコード

    2014年02月20日 18時45分
    URLエンコードと言えばRFC 3986みたいな仕様が有るものの
    言語や実装によって変換される文字種がとってもファジーな感じです。

    そのため対向システムとのやり取りの障害となることが頻繁に発生します。

    例によって今回も発生したので対応方法をメモっておきたいと思います。
    使用言語はJavaです。


    この場合の対応方法は基本的に変換する文字種を指定してURLエンコードを行うことです。

    URLエンコードの処理はそれほど難しくもないので
    自分で全部書いてしまってもいいと言えばいいのですが
    車輪の再発明を何度もするのもアレなので既存のライブラリ(Apache Commons Codec)を使用する方法です。

    1public String myUrlEncode(String source)
    2{
    3    StringBuilder sb = new StringBuilder();
    4
    5    // URLで安全な(変換しない)値を指定する
    6    // 以下は英数字のみの指定
    7    BitSet urlSafe = new BitSet();
    8    urlSafe.set(0x30, 0x3a);
    9    urlSafe.set(0x41, 0x05b);
    10    urlSafe.set(0x61, 0x07b);
    11
    12    // URLCodec.encodeUrlを上記の設定を使って実行する
    13    // 返される値は変換済み文字列のASCIIコード
    14    for (byte b : URLCodec.encodeUrl(urlSafe, source.getBytes(StandardCharsets.UTF_8)))
    15        sb.appendCodePoint(b);
    16
    17    return sb.toString();
    18}
  • SAStrutsのHTML5対応 その2

    2013年08月01日 23時15分
    taglib-html5_1_2_9_1.zip

    旧バージョンからさらに属性を追加しています。
    HTML5の仕様を見つつ追加したので必要な物は大体フォローされているかと思います。

    これだけ属性が多いので
    書かれた属性をそのまま全部出力するようにした方が良いのではないかと
    思ったりもしましたがとりあえず素直に追加しました。

    旧バージョンではFormTagは付属せず元の物を使うようにしていたのですが
    formタグにも属性を追加するため新たに作成しています。

    それに伴いSAStrutsとの連携部分で不都合が起きたため
    SAStrutsのタグを改造した物も付けました。

    今更このバージョンのStrutsを使うということは
    ほぼSAStrutsだと思いますので利用頻度は高いと思います。
  • SAStrutsのHTML5対応

    2012年08月21日 23時16分
    SAStrutsはStrutsベースなのでフォームを作るときはtaglibを使うわけですが、
    これがもうだいぶ古いプログラムなのでHTML5なんて知らないのです。

    しかし、最近ブラウザでも実装され始め、にわかに便利な
    emailとかrequiredとかpatternとかを使いたい!


    というわけでHTML5対応してみました。
    taglib-html5_1_2_9_0.zip


    対応といっても基本的にはTextTagをコピペして各種inputタグを作成し、
    TLDに新しい属性を書きまくっただけです。

    しばらく使ってみていますが、一応動いているので大丈夫な気がします。
  • SAStrutsとmultipart/form-data

    2012年05月19日 16時38分
    SAStrutsを使っていて、formをsubmitしたら何故か404エラーという現象で困ったのでメモって置きます。

    RoutingFilterがHttpServletRequestのパラメータ名とActionのMethod名との一致をチェックしていますが、
    formがmultipart/form-dataだとHttpServletRequestのパラメータが空なので
    <s:submit/>で指定したMethod名が見つからずNot foundとなるようです。

    「index」というメソッドを実装しておくと、これがデフォルトで選ばれてforwardされるので、
    multipart/form-dataのフォームを受け取るActionには「index」という名前のメソッドを作って置こう。