[Seasar-user:11666] Re: [Teeda] 入力フォームを空でサブミットしたらPageで空文字で受け取りたい
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2007年 11月 15日 (木) 23:00:19 JST
小林 (koichik) です.
Date: Wed, 14 Nov 2007 21:11:09 +0900
From: 木村 究道 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11648] [Teeda] 入力フォームを空でサブミットしたらPageで空文字で受け取りたい
> 入力フォームを空でサブミットした場合にPageクラスにnull
> が入ってこないようにできないか、調査しています。
null を空文字列に変換するインターセプタを
作って setter メソッドに適用してはどうでしょうか.
こんな感じ.
public class NullToEmptyStringInterceptor implements MethodInterceptor {
public Object invoke(final MethodInvocation invocation) throws Throwable {
final Method method = invocation.getMethod();
final Class[] paramTypes = method.getParameterTypes();
if (paramTypes.length == 1 && paramTypes[0] == String.class) {
final Object[] params = invocation.getArguments();
if (params[0] == null) {
params[0] = "";
}
}
return invocation.proceed();
}
}
これを
<component name="pageCustomizer" class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addAspectCustomizer">
<arg>"nullToEmptyStringInterceptor"</arg>
<arg>"set.*"</arg>
</initMethod>
</component>
のようにすることで,setXxx(String) の引数が null だと
空文字列が設定されます.
> >モデル側が空文字列で更新されちゃまずいと思うんですけど。
>
> が、気になっているんですが、「モデル側」の意味がわからず
> 理解できていません。
JSF 用語ですね.
Teeda Extension の場合は Page クラスのことだと
考えていいと思います.
--
<signature>
<name>Koichi Kobayashi</name>
<e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>
Seasar-user メーリングリストの案内