[YMIR-311] [ymir-zpt] RequestとPageクラスから取得する記法を明示的に Created: 2009-01-28  Updated: 2009-02-09  Resolved: 2009-02-09

Status: Closed
Project: Ymir
Component/s: ymir-zpt
Affects Version/s: 1.0.0
Fix Version/s: 1.0.2

Type: Improvement Priority: Major
Reporter: jflute Assignee: skirnir
Resolution: Fixed Votes: 0
Labels: None


 Description   

【概要】
現状「tal:attributes="value self/birthdate"」と書くとPageクラスのプロパティから値を取得する。
そして「tal:attributes="value birthdate"」と書くとRequestParameterから値を取得し、なければ、
Pageクラスのプロパティから値を取得するというマルチな特殊な動きをする。
この「self/」を付与しない記法は、主にDate型プロパティのバリデーション再描画に利用するが、
この記法に以下のデメリットがある:

o パッと見が直感的でない *1
o 機能の説明がとてもしづらい

*1: 付け忘れかなのかどうか判断しづらい

そのため、もう少し明示的な書き方をする方が良いかと思われる。
もともとこれは、
「tal:attributes="request/parameter(birthdate) | self/birthdate"」
の省略記法になる。
このもともとの書き方は非常にわかりやすいがあまりに煩雑である。

そこで、短めで明示的な記法を導入してはどうかというところである。

【解決案】
「tal:attributes="reqself/birthdate"」

と書くことで

「tal:attributes="request/parameter(birthdate) | self/birthdate"」

と同義にすることはできないか!?
短めであり、かつ、直感的でもある。
(Requestの方を優先してるという仕様も直感的で覚えやすい)
会話でも「レックセルフ」と呼びやすく覚えやすい。

一案なので
「tal:attributes="req-self/birthdate"」
とか
「tal:attributes="req$self/birthdate"」
とかでも良い。



 Comments   
Comment by skirnir [ 2009-02-09 ]

確認していただいたのでcloseします。

Comment by jflute [ 2009-02-09 ]

ありがとうございます。試してみて動作してことを確認しました。
これでとてもわかりやすくなりました。
dbflute-ymir-exampleのreadme.txtの記述も修正しました。

Comment by skirnir [ 2009-02-09 ]

あればリクエストパラメータ、なければselfのプロパティを検索する「param-self」という変数を導入しました(r2775)。

Comment by skirnir [ 2009-01-29 ]

"value birthdate" 記法が直感的かどうかは主観的な話になるので議論は控えたいと思いますが、この記法は実際はもっと複雑な動きをします。(ここでは説明は省略します) そのせいで開発者の意図しない動作をしてしまうということはありえると思います。

というわけで、reqself的な要素の導入は良いことだと思います。導入を検討します。

Comment by jflute [ 2009-01-29 ]

「tal:attributes="value birthdate"」の記法をやめる必要はなくて(互換性保つ)、
新しく明示的な書き方を追加するってイメージです。

Generated at Thu Apr 25 16:35:51 JST 2024 using Jira 9.15.0#9150000-sha1:9ead8528714127d8cfabf2446010d7e62c0a195c.