2012-03-13 7 views
1

タグは私が_ticketを持つhtmlを書くようにしますが、私はajaxのhtmlをやっているときに "チケット"を書きます。以下は、私は次のように別のページに、このページを再利用したい場合は、私が持っているので、それは動作しませんのでplayframework、ajax、リクエストの再利用性を得る。

#{projectInfoPage ticket:ticket} 

AJAX呼び出し...(変数チケットを気づか)

<div> 
    <div class="entry"> 
     <div class="spacer"></div> 
     <span class="label ">Release<span>(Optional)</span></span> 
     <span class="input "> 
      #{select 'ticket.release', items:releases, valueProperty:'id', labelProperty:'name', value:ticket?.release?.id/} 
     </span> 
     <div style="clear: both;"></div> 
    </div> 
</div> 

<div> 
    <div class="entry"> 
     <div class="spacer"></div> 
     <span class="label ">Subproj/Cat.<span>(Optional)</span></span> 
     <span class="input "> 
      #{select 'ticket.subproject', items:subprojects, valueProperty:'id', labelProperty:'name', value:ticket?.subproject?.id/} 
      <a id="newinfo" class="help" title="&{'help.subproject'}">Help</a> 
     </span> 
     <div style="clear: both;"></div> 
    </div> 
</div> 

ためのhtmlですすべてのケースで_ticketになるように上記のページを変更することができます(私はどのようにシームがグローバル変数を持っていて、この場合はグローバルチケットを使用して処理するのが好きです)。

いずれにしても、上記のようなスクリプトをplayframeworkに書き込む方法はありますか?ああ待って、タグとして、それはタグのフォルダに行く必要があります!!!! grrrr。

hmmm私はこの問題を解決するために考えることができる唯一のクリーンな方法は、projectInfoPage.htmlを#{projectInfoTagチケット:ticket}にして、コードをタグフォルダに移動して#{projectInfoTagチケット:ticket} getとajaxの両方の呼び出しのために働くget要求のための私のメインページに。これは少し醜いです。他に誰かがこれに遭遇する?余分なファイルを取り除いて再利用できるようにしなければならない方法はありますか?

答えて

2

上記のコードは再利用することができます。ちょうどticketから_ticketに変更するだけです。あなたのselectタグでは、name要素(つまり、名前としてPOSTにサーバーに送信されたビットは変更する必要はありません)は、変数ではなくプレーンテキストです。

コードは...

#{select 'ticket.release', items:_releases, valueProperty:'id', labelProperty:'name', value:_ticket?.release?.id/} 

次これはreleasesリストとticketプロパティに渡すためにあなたを必要とする。これは、という選択の値を意味します。先頭のticket.release一部がアンダースコアが先頭に付加していないことに注意してくださいサーバーに正しい方法で送信されます。

また、タグではないHTMLコードの再利用可能なビットであれば、includeタグを使用できます。

http://www.playframework.org/documentation/1.2.4/tags#include

文書で説明したように... includeは、別のテンプレートが含まれています。現在のテンプレートの変数はすべて、付属のテンプレートで直接利用できます。

<div id="tree"> 
    #{include 'tree.html' /} 
</div> 
+0

ああ、私のコメントを無視.....私は参照してください、インクルードは答えです!完璧! –

1

これは本当にエレガントではなく、そこよりよい解決策は、おそらくですが、あなたはタグでは、このような何かを行うことができます:

#{if _ticket} 
    #{set ticket:_ticket} 
#{/if} 

これは、パラメータ_ticketするticket変数を設定します。明らかにticketが既に設定されていて、_ticketが設定されていない状況では、上記のif文はfalseを返し、したがってticketはそのまま動作します。

+0

クールで、あなたにポイントを与えました。 @codemwnciが投稿したインクルードタグについて知りませんでした。 –

関連する問題