[Seasar-user:18906] Re: [Ymir] Validate後に、該当textboxのスタイルを変更したい

kubo [E-MAIL ADDRESS DELETED]
2009年 11月 17日 (火) 15:18:05 JST


久保(jflute)です。

dbflute-ymir-exampleもその仕様に合わせて修正しました。
(ラベルに対してスタイルの置き換え方式で利用しています)

2009/11/17 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
> 西山(hajimeni)です。
>
> 返信遅くなりました、申し訳ありません。
>
> 自動生成時でも大丈夫なことを確認しました。
> サンプルも拝見させていただきました。
> 非常にわかりやすいです。ありがとうございます。
>
> !形式も追加されたのですね。
> class属性の置換は割とうれしいです。
>
>
> 以上よろしくお願いいたします。
>
> [2009/11/13 14:35] YOKOTA Takehiko さんは書きました。:
>> 横田です。
>>
>> また何か気づいた点があればご指摘いただければ幸いです。
>>
>> ところで、decorate式を使うと自動生成時にエラーになってしまうという問題が発覚しました
>> ので、対処版のSNAPSHOTをデプロイしました。以下のjarを最新のものに差し替えてお使い下さい。
>> ・freyja
>> ・ymir-zpt
>> ・ymir-extension
>>
>> また、ymir-example-genericにdecorate式の使い方のサンプルを新規に追加しましたので見てみて
>> 下さい。(http://localhost:8080/ymir-example-generic/decorate/index.html)
>>
>> オンラインドキュメントにも近日中にdecorate式について記載することにします。
>>
>> 以上よろしくお願いします。
>>
>>
>> 西山 はじめ さんは書きました:
>>> 西山(hajimeni)です。
>>>
>>> 対応ありがとうございます。
>>> 思いつきで書いただけでしたが、採用していただいてありがとうご
>>> ざいます。
>>>
>>> 最新のSNAPSHOTで、確認いたしました。
>>> 両方の記述方法のどちらでも、class属性に追加されました。
>>>
>>> class属性以外で利用するパターンが思いつきませんでした(今の
>>> ところ)ので、問題はないと思います。
>>>
>>> 以上よろしくお願いいたします。
>>>
>>> [2009/11/12 18:26] YOKOTA Takehiko さんは書きました。:
>>>> 横田です。
>>>>
>>>>> いっそのこと、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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>
>>>>>
>>>
>>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内