2009-06-12 11 views
1

EDIT:フィードバックに基づいて、私は、変数要求またはのparamsにアクセスし、コントローラとGSPの間にそれを渡したい、より良い言語でリクエスト変数

を再ポスト完全オリジナルQ.を消去します。 paramsオブジェクトにはクエリ文字列に含まれるものがすべて含まれていることを理解しています。

私が見るすべての例はすべてモデル駆動型です。 私はオンラインでドキュメントを検索しました.2つの書籍があります.1つ目はgrailsの初めの段階で、もう1つはgrailsのガイドです。 paramsの設定とアクセス方法を理解したい。どこでも読んでいるのは、リクエスト変数のマップだということです。

私のシナリオは次のとおりです: 私はGSPに(データベースではない)リストを送信するコントローラを持っています。私はGSPとコントローラの間に "params"変数を渡すことを考えました。

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

コントローラコード:

//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> 
+0

あなたには、いくつかのコードスニペットを投稿することができますか?あなたの問題が何であるかを言ってもテキストは非常に正確ではありません。 – Chii

+0

完了 - 申し訳ありませんが、以前の投稿に耐えなければなりませんでした! – Mak

答えて

2

のparamsオブジェクトは、現在の要求のクエリ文字列から取得値に対してのみ有用です。 をGSPのparamsの値に設定すると、何も処理されません。 Paramsは要求スコープオブジェクトであり、新しい要求ごとにまったく新しいオブジェクトです。 GSPからListコントローラーに値を渡すには、その値はコントローラーへの新しい要求の照会ストリング内になければなりません。あなたの場合、それはあなたの "More"リンクに入れたいと思うようです。あなたのremoteLinkタグが書かれている方法では、nxtPageの値はリストコントローラのparams.idになければなりません。 params.pagecountに入れたいのであれば、それをあなたのremoteLinkタグのparams属性に入れなければなりません。このような何か:

<g:remoteLink action="list" params="[pagecount: nxtPage]">More</g:remoteLink> 
+0

おかげで、これを試してみて 私は次のことができるかどうか教えていただけますか?(エラーが発生しました:クラス 'java.lang.String'をクラス 'java.lang.Integer'にオブジェクト '2'をキャストできません) これは私のGSPにあるものです int pageInt = params ["pagecount"] – Mak

+0

int pageInt = params ["pagecount"] – Mak

+0

リクエストパラメータはparamsオブジェクトからStringオブジェクトとして出力されます。文字列の整数値が必要な場合は、次のように解析する必要があります。 int pageInt = Integer.parseInt(params.pagecount) –

1
def urlString = request.scheme + "://" + request.serverName + ":" 
+ request.serverPort + "/" + grailsApplication.metadata.'app.name' 
+ "/" + controllerName + "/" 
+1

ようこそ。あなたが答えるときにコードを説明してください。 – Tim

関連する問題