[Seasar-user:22040] Re: SAStrutsのURLType
Hiroyuki Ohnaka
[E-MAIL ADDRESS DELETED]
2015年 3月 14日 (土) 02:43:21 JST
大中です。
> あまり動作を変えたくなければ、
> UrlValidator#isValidAuthorityの、問題の箇所だけ書き換えて、
> コピー実装しても行けるのではないかと思います。
私も、UrlValidatorのところの実装を置き換えるのが上策かな、と思います。
Commons Validatorのトラッキングに該当するチケットがあがってましたが、
事実上rejectされてました...
UrlValidator rejects top-level domains (TLDs) with more than 4 characters
https://issues.apache.org/jira/browse/VALIDATOR-216
On 2015/03/14 1:41, takeshi kato wrote:
> こんばんは、加藤と申します。
>
> 少し調べてみたので、共有します。
>
>
> ■エラーになっている原因
> トップレベル・ドメインが5文字以上の場合、不正なURLとして判定される
> ようです。
>
> StrutsのFieldChecks#validateUrl にて、
> org.apache.commons.validator.UrlValidator#isValid
> を呼び出して、URLが正常か判定をしているようです。
>
> そこから呼び出している
> UrlValidator#iisValidAuthorityの以下の部分で、
> tokyoドメインが、不正なURLと判定されてしまっていました。
>
> --------------------------------------
> String topLevel = domainSegment[segmentCount - 1];
> if (topLevel.length() < 2 || topLevel.length() > 4) {
> return false;
> }
> --------------------------------------
>
> トップレベルドメインの長さが、2~4文字である事しか想定されていないようで、
> tokyoドメインは5文字なので、これに引っかかってしまっているようですね。
>
> 試しに「http://hello.tokyo/hoge」で確認してみたところ、上記の部分で
> 引っかかりました。
>
> 最近はTLDも増えてきましたから、他のドメインでも十分起こり得ますね。
>
>
> ■解決案
> S2FieldChecksを継承した独自バリデータを作成することで、
> 回避出来ませんでしょうか。
>
> 以下のような独自バリデータクラスを作成し、
>
> ---------------------------
> public class OriginalUrlChecks extends S2FieldChecks {
>
> private static final long serialVersionUID = 1L;
>
> public static boolean checkURL(final Object bean, final
> ValidatorAction validatorAction, final Field field, final ActionMessages
> errors, final Validator validator, final HttpServletRequest request){
> //TODO TLDが5文字以上でも不正にならないような、URLチェックの実
> 装が必要。
> }
> }
> ---------------------------
>
>
> validator-rules.xmlの以下の部分を、上記の独自バリデータメソッドを呼ぶ
> ように書き換えることで、
> 回避出来ると思います。
>
> ---------------------------
> <validator name="url"
> classname="org.apache.struts.validator.FieldChecks"
> method="validateUrl"
> methodParams="java.lang.Object,
> org.apache.commons.validator.ValidatorAction,
> org.apache.commons.validator.Field,
> org.apache.struts.action.ActionMessages,
> org.apache.commons.validator.Validator,
> javax.servlet.http.HttpServletRequest"
> depends=""
> msg="errors.url"/>
> ---------------------------
>
> あまり動作を変えたくなければ、
> UrlValidator#isValidAuthorityの、問題の箇所だけ書き換えて、
> コピー実装しても行けるのではないかと思います。
>
>
> よろしくお願いします。
>
>
>
> 2015年3月13日 19:51 泉井透 <toru_izui @ evolveit.jp
> <mailto:toru_izui @ evolveit.jp>>:
>
> こんにちは。
>
> SAStrutsのURLTypeバリデーションで、URLのチェックをしていますが、
> .tokyoドメインだと不正なURLだと認識されようです。
>
> 例:
> http://hello.tokyo/
>
> どのようにすれば正常なURLと認識されるのか何方かご存じないでしょうか?
> 教えてください。
>
>
> --
> エボルブアイティワークス株式会社
> 泉井 透
> SkypeID:izui.toru
> tel:03-6457-8330
> FAX:03-6457-8331
> Mobile1:080-1286-4715
> Mobile2:090-4127-5378
> http://www.evolveit.jp
>
> EvolveITWorks Corporation.
> toru izui
> SkypeID:izui.toru
> tel:+81-3-6457-8330 <tel:%2B81-3-6457-8330>
> FAX:+81-3-6457-8331 <tel:%2B81-3-6457-8331>
> Mobile1:+8180-1286-4715 <tel:%2B8180-1286-4715>
> Mobile2:+8190-4127-5378 <tel:%2B8190-4127-5378>
> http://www.evolveit.jp
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org <mailto:Seasar-user @ ml.seasar.org>
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
>
> --
> --------------------------Lei Hau'oli Co.,Ltd. -----------------------
>
> 加藤 健(Takeshi Kato)
> Mail: t.kato @ leihauoli.com <mailto:t.kato @ leihauoli.com>
> 携帯1: 090-8003-2117
> 携帯2: 080-9027-8873
>
> 株式会社Lei Hau'oli (レイハウオリ)
> http://www.leihauoli.com/
> 〒150-0002
> 東京都渋谷区渋谷3-2-3 帝都青山ビル6F
> Tel: 03-5778-3639 Fax:03-5778-3642
>
> ---------------------------------------------------------------
>
>
> _______________________________________________
> Seasar-user mailing list
> Seasar-user @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
Seasar-user メーリングリストの案内