1

編集:フィードバックに基づいて、元のQ.を完全に消去し、より良い言語で再投稿します

request または params 変数にアクセスして、コントローラと gsp の間で渡したいと考えています。params オブジェクトには、クエリ文字列が持つすべてのものが含まれていることを理解しています。

私が見るすべての例は、すべてモデル駆動型です。私はオンラインでドキュメントを検索し、2冊の本を持っています.begin-grailsとgrailsの決定的なガイドです.どちらもparamsのデータベース駆動の例を持っています. params の設定方法とアクセス方法を理解したい。どこでも読んだのは、それがリクエスト変数のマップだということだけです。

私のシナリオは次のとおりです。リストを (データベースからではなく) GSP に送信するコントローラーがあります。GSPとコントローラーの間で「params」変数を渡すことを考えました。

繰り返しますが、私のシナリオはモデル駆動型ではありません。アイテムのリスト (データベース数は不明) を反復処理しようとしていますが、ユーザーのクリックによって駆動されます。ツイッターの「一番下のボタン」のようなものを実装することを考えました。ページの下部に新しいページ カウンターを含む単純なリモートリンクがあり、コントローラーでアクセスし、リストの新しい部分のサービス クラスに渡します。

コントローラーコード:

//access params from request
int pageInt =params["pagecount"] // *i always get null here*

callMyList(pagecount) //calls my service method to get next set of list for next page

GSP (実際ではない) コード

 <%= params.get("pagecount") %>
 <%= nxtPage = pagecount++ %>
  ...
 <%params["myId"] = nxtPage%>


<g:remoteLink action="list" id="${nxtPage}">More</g:remoteLink>
4

2 に答える 2

2

params オブジェクトは、現在のリクエストのクエリ文字列から値を取得する場合にのみ役立ちます。GSP で params に値を設定しても何も起こりません。Params はリクエスト スコープ オブジェクトであり、新しいリクエストごとにまったく新しいオブジェクトになります。GSP から List コントローラーに値を渡すには、その値がコントローラーへの新しい要求のクエリ文字列に含まれている必要があります。あなたの場合、「More」リンクに入れたいようです。remoteLink タグの記述方法では、nxtPage の値は List コントローラーの params.id にある必要があるため、その方法でアクセスできます。params.pagecount に入れたい場合は、remoteLink タグの params 属性に入れる必要があります。このようなもの:

<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink>
于 2009-06-12T11:30:38.250 に答える
1
def urlString =  request.scheme + "://" + request.serverName + ":" 
+ request.serverPort + "/" + grailsApplication.metadata.'app.name' 
+ "/" + controllerName + "/" 
于 2011-10-28T11:12:22.237 に答える