[Seasar-user:19984] [mobylet] 画像リサイズ時の事象報告と要望
[E-MAIL ADDRESS DELETED]
[E-MAIL ADDRESS DELETED]
2010年 7月 19日 (月) 21:40:29 JST
お世話になります。
decoyです。
mobyletの画像リサイズ機能ですが、
存在しない画像へのパスが指定されていると
下記のようなエラー(500エラー)が発生します。
・相対パスで存在しない画像を指定した場合
java.lang.IllegalArgumentException: input == null!
javax.imageio.ImageIO.read(ImageIO.java:1322)
org.mobylet.core.image.impl.MobyletImageScaler.scale(MobyletImageScaler.java:53)
org.mobylet.core.http.image.MobyletImageScaleServlet.doGet(MobyletImageScaleServlet.java:124)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:159)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:99)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
org.mobylet.core.http.MobyletFilter.processFilter(MobyletFilter.java:121)
org.mobylet.core.http.MobyletFilter.doFilter(MobyletFilter.java:74)
・絶対パスで存在しない画像を指定した場合
org.mobylet.core.MobyletRuntimeException: ストリームをオープンできません path = http://hogehoge.jp/hoge.gif
org.mobylet.core.image.impl.MobyletImageReader.getStream(MobyletImageReader.java:114)
org.mobylet.core.http.image.MobyletImageScaleServlet.doGet(MobyletImageScaleServlet.java:92)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:159)
org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:79)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doHotdeployFilter(HotdeployFilter.java:99)
org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:67)
org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
org.mobylet.core.http.MobyletFilter.processFilter(MobyletFilter.java:121)
org.mobylet.core.http.MobyletFilter.doFilter(MobyletFilter.java:74)
存在しない画像へのパスが指定されている場合は
404エラーとするのが正しい動きのように思いますが如何でしょうか。
使用しているバージョンは下記のとおり、いずれも1.0.5です。
mobylet-charset-1.0.5.jar
mobylet-core-1.0.5.jar
mobylet-taglibs-1.0.5.jar
mobylet-mail-1.0.5.jar
mobylet-s2extension-1.0.5.jar
mobylet-gaeextension-1.0.5.jar
ここから要望です。
動的にパスを生成している場合等で、存在しない画像へのパスが指定されている場合は
下記のような挙動として頂く事は可能でしょうか。
・mobylet.image.propertiesに存在しない画像へのパスが
imageScalerへ指定されていた場合に読み込む画像を
下記のような感じで予め定義しておき、
下記で定義した画像も存在しない場合は404エラーとする
# 画像が存在しなかった場合に読み込む画像の定義を行なう
# 絶対パス、相対パスで指定可能且つ${docBase}や${contextPath}といった予約変数も使用可能とする
# image.source.no.existsというのは仮の項目名です
# もっと相応しい名前があれば変更して下さい
image.source.no.exists=non.jpg
以上、御検討の程、宜しくお願い致します。
// decoy
PS: 竹内(stakeuchi)様へ
先程、twitterでフォローさせて頂きましたので
宜しければフォローして頂けますと幸いです。
Seasar-user メーリングリストの案内