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

西山 はじめ [E-MAIL ADDRESS DELETED]
2009年 11月 17日 (火) 09:46:09 JST


西山(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 メーリングリストの案内