[Seasar-user:18887] Re: [Ymir] Validate後に、該当textboxのスタイルを変更したい
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
2009年 11月 12日 (木) 18:26:08 JST
横田です。
> いっそのこと、decorate式をnotes以外でも使用できるように、
>
> tal:attributes="class decorate:真偽値 with class値"
>
> にしてしまった方が、個人的にはしっくりきます。
いいアイデアですね!早速このアイデアを元に内部で検討しました。その結果、
・このアイデアはナイスなので実装する
・Notesの状態によって装飾するための簡易記法として、元々のdecorate:の書き方を
decorate-by-notes:として記述できるようにする
ということにしました。
というわけで、最新版のSNAPSHOT(freyja、ymir)を使うことで、以下の2つの書き方
ができるようになりました。
(1) tal:attributes="class decorate:notes/contains(date2) with error"
(2) tal:attributes="class decorate-by-notes:date2 with error"
ちなみにdecorate, decorate-by-notesはclass属性専用のため、tal:attributes
属性での、class属性のための
値の設定用にしか使えないようにしてあります。問題あればお知らせ下さい。
西山 はじめ さんは書きました:
> 西山(hajimeni)です。
>
>
>> バリデーションエラー専用(正確には、Notesにエントリがある
>>
> かどうか、
>
>> なので、バリデーションエラー以外でも画面にメッセージを出し
>>
> たい場合
>
>> には使えます)なので、いい名前がないものかと思っています。
>>
>
>
>> 意味的には「decorate-by-notes」という感じなんですが、長い
>>
> かなぁと
>
>> 思って単に「decorate」としています。何かいいアイデアがあれ
>>
> ばご提案
>
>> いただけるとうれしいです。
>>
>
> なるほど、意味は理解いたしました。
> 名前を考えていますが、なかなかぴったりなものが見つかりません。
>
> いっそのこと、decorate式をnotes以外でも使用できるように、
>
> tal:attributes="class decorate:真偽値 with class値"
>
> にしてしまった方が、個人的にはしっくりきます。
>
> 使うときには、
>
> tal:attributes="class decorate:notes/contains(date2) with error"
>
> と少し冗長になってしまいますが・・・
>
>
>
> 以上よろしくお願いいたします。
>
> [2009/11/11 18:06] YOKOTA Takehiko さんは書きました。:
>
>> 横田です。
>>
>>
>>> decorate ですと「装飾する」という意味ですが、バリデーション
>>> エラー以外にもこの書式は利用できるのでしょうか?
>>>
>>> バリデーションエラーの場合のみの仕様の場合、構文として分かり
>>> づらいのではないかと思います。
>>>
>> おっしゃるとおりです。実は命名についてはかなり悩んでいました。
>> バリデーションエラー専用(正確には、Notesにエントリがあるかどうか、
>> なので、バリデーションエラー以外でも画面にメッセージを出したい場合
>> には使えます)なので、いい名前がないものかと思っています。
>>
>> 意味的には「decorate-by-notes」という感じなんですが、長いかなぁと
>> 思って単に「decorate」としています。何かいいアイデアがあればご提案
>> いただけるとうれしいです。
>>
>>
>> 西山 はじめ さんは書きました:
>>
>>> 西山(hajimeni)です。
>>> お世話になっております。
>>>
>>> 横田さん、対応ありがとうございます。
>>> 早速見させていただきました。
>>>
>>> 行いたいことはこれで実現できます。ありがとうございます。
>>>
>>> ひとつ気になる点があります。
>>>
>>> decorate ですと「装飾する」という意味ですが、バリデーション
>>> エラー以外にもこの書式は利用できるのでしょうか?
>>>
>>> バリデーションエラーの場合のみの仕様の場合、構文として分かり
>>> づらいのではないかと思います。
>>>
>>> teeda の onError のような名称の方がよいと思うのですがいかが
>>> でしょうか。
>>>
>>> 以上よろしくお願いいたします。
>>>
>>> [2009/11/11 16:49] YOKOTA Takehiko さんは書きました。:
>>>
>>>> 横田です。
>>>>
>>>> メール遅くなりました。この件、dbflute-ymir-exampleで用いていた書式は
>>>> 一時期動作していましたが、検討の末SNAPSHOTレベルで廃止されました。
>>>> (久保さんごめんなさい)
>>>>
>>>> 代わりに、ymir-1.0.7-SNAPSHOTでは、新しい書式として以下のような記述が
>>>> できるようになっています。
>>>>
>>>> tal:attributes="class decorate:パラメータ名 with class値"
>>>>
>>>> これは、「パラメータ名で指定されたパラメータについてバリデーションエラー
>>>> が起きた場合に、class値で指定された値を現在のclass属性の値に追加する」
>>>> という意味になります。(バリデーションエラーがない場合はclass属性の値
>>>> はそのままです。)
>>>>
>>>> ymir-example-genericの最新版の
>>>>
>>>> http://localhost:8080/ymir-example-generic/text/index.html
>>>>
>>>> も見てみて下さい。
>>>>
>>>> なお、上記書式を使うには、最新のYmirの1.0.7-SNAPSHOTとFreyjaの1.0.17-SNAPSHOT
>>>> が必要になります。両方ともmavenのsnapshotリポジトリにはデプロイ済みです。
>>>>
>>>> 以上よろしくお願いします。
>>>>
>>>>
>>>> 西山 はじめ さんは書きました:
>>>>
>>>>> 西山(hajimeni)です。
>>>>>
>>>>> > すいません、dbflute-ymir-exampleのその部分が
>>>>> > Ymirとある時点(SNAPSHOT)の方式でした。
>>>>> > ちょっとちゃんとしたやり方を調べて直しますね。
>>>>>
>>>>> 了解いたしました。
>>>>> よろしくお願いいたします。
>>>>>
>>>>>
>>>>> [2009/11/06 17:52] kubo さんは書きました。:
>>>>>
>>>>>> 久保(jflute)です。
>>>>>>
>>>>>> 西山さん、こんにちは
>>>>>>
>>>>>> すいません、dbflute-ymir-exampleのその部分が
>>>>>> Ymirとある時点(SNAPSHOT)の方式でした。
>>>>>> ちょっとちゃんとしたやり方を調べて直しますね。
>>>>>>
>>>>>> 2009/11/5 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>>>
>>>>>>> お世話になっております。
>>>>>>> 西山(hajimeni)です。
>>>>>>>
>>>>>>> 最新のtrunk(https:
>>>>>>> //www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-ymir-example) に存
>>>>>>> 在する
>>>>>>> dbflute-ymir-example なのですが、 member/edit/input.html の
>>>>>>> Validation後の スタイル変化が動き
>>>>>>> ません。
>>>>>>>
>>>>>>> <label tal:attributes="class notes/contains(memberAccount) ?
>>>>>>> string:label-invalid : default" class="label-normal">
>>>>>>>
>>>>>>> 以前は動作していたような覚えがあるのですが、ログを見ると例外 が発生し
>>>>>>> ておりました。
>>>>>>>
>>>>>>> また、次のように修正すると動きます。
>>>>>>> <style>
>>>>>>> .label-true {
>>>>>>> color: #DD6666;
>>>>>>> }
>>>>>>> </style>
>>>>>>> <label tal:attributes="class
>>>>>>> string:label-${notes/contains(memberAccount)}"
>>>>>>> class="label-normal">
>>>>>>>
>>>>>>> ログには、以下のように出力されています。
>>>>>>> 解決方法ありますでしょうか?
>>>>>>> また、Ymir1.0.4 を利用したサンプルまでさかのぼって取得しても 同じ結果
>>>>>>> でした。
>>>>>>>
>>>>>>> 環境は
>>>>>>> Tomcat6.0
>>>>>>> JDK1.6
>>>>>>> です。
>>>>>>>
>>>>>>> 以上よろしくお願いいたします。
>>>>>>> =======================================================
>>>>>>> ここからログ
>>>>>>> =======================================================
>>>>>>> 2009-11-05 19:10:01,767 DEBUG http-8080-3
>>>>>>> [YmirBeanPathResolver#resolve():42] - No Such property
>>>>>>> (org.seasar.ymir.message.Notes/contains(memberAccount) ?
>>>>>>> string:label-invalid : default): treated as null
>>>>>>> java.lang.NoSuchMethodException: Unknown property 'contains'
>>>>>>> at
>>>>>>> org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:536)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.commons.beanutils.PropertyUtilsBean.getMappedProperty(PropertyUtilsBean.java:485)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.commons.beanutils.PropertyUtilsBean.getNestedProperty(PropertyUtilsBean.java:682)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.commons.beanutils.PropertyUtilsBean.getProperty(PropertyUtilsBean.java:715)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.commons.beanutils.PropertyUtils.getProperty(PropertyUtils.java:290)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.ymir.zpt.YmirBeanPathResolver.resolve(YmirBeanPathResolver.java:31)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.PathTypePrefixHandler.resolveSegment(PathTypePrefixHandler.java:182)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.PathTypePrefixHandler.resolvePath(PathTypePrefixHandler.java:155)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.PathTypePrefixHandler.resolvePath(PathTypePrefixHandler.java:135)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.PathTypePrefixHandler.handle(PathTypePrefixHandler.java:68)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.TalesExpressionEvaluator.evaluateExpression(TalesExpressionEvaluator.java:144)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.tales.TalesExpressionEvaluator.evaluate(TalesExpressionEvaluator.java:116)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.ymir.zpt.YmirTalesExpressionEvaluator.evaluate(YmirTalesExpressionEvaluator.java:46)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.TalTagEvaluator.processAttributes(TalTagEvaluator.java:747)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.TalTagEvaluator.evaluate(TalTagEvaluator.java:459)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.MetalTagEvaluator.evaluate(MetalTagEvaluator.java:128)
>>>>>>>
>>>>>>> at net.skirnir.freyja.TagElement.evaluate(TagElement.java:49)
>>>>>>> at
>>>>>>> net.skirnir.freyja.TagEvaluatorUtils.evaluateElements(TagEvaluatorUtils.java:56)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.TalTagEvaluator.evaluate(TalTagEvaluator.java:533)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.zpt.MetalTagEvaluator.evaluate(MetalTagEvaluator.java:128)
>>>>>>>
>>>>>>> at net.skirnir.freyja.TagElement.evaluate(TagElement.java:49)
>>>>>>> at
>>>>>>> net.skirnir.freyja.impl.TemplateEvaluatorImpl.evaluate(TemplateEvaluatorImpl.java:118)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.webapp.FreyjaServlet.doProcess(FreyjaServlet.java:244)
>>>>>>>
>>>>>>> at
>>>>>>> net.skirnir.freyja.webapp.FreyjaServlet.doPost(FreyjaServlet.java:163)
>>>>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
>>>>>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.ymir.impl.YmirImpl.processResponse(YmirImpl.java:273)
>>>>>>> at org.seasar.ymir.zpt.ZptYmir.processResponse(ZptYmir.java:47)
>>>>>>> at org.seasar.ymir.impl.YmirImpl.process(YmirImpl.java:213)
>>>>>>> at
>>>>>>> org.seasar.ymir.servlet.YmirFilter.doFilter(YmirFilter.java:90)
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.cms.pluggable.servlet.PluggableFilter.doFilter(PluggableFilter.java:43)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.ymir.servlet.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:96)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.ymir.servlet.MultipartRequestFilter.doFilter(MultipartRequestFilter.java:44)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
>>>>>>>
>>>>>>> at
>>>>>>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
>>>>>>> at java.lang.Thread.run(Thread.java:619)
>>>>>>> =======================================================
>>>>>>>
>>>>>>> --
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>> 西山 はじめ
>>>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Seasar-user mailing list
>>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Seasar-user mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>
>
>
>
--
YOKOTA Takehiko
[E-MAIL ADDRESS DELETED]
Seasar-user メーリングリストの案内