0

私はLiferayと一緒にGrailsポートレットプラグインを使用しようとしていますが、チュートリアルの内容に関係なく、異なるページをレンダリングできないようです。

マッピングを表示

それをサポートするリクエストタイプ('resource'、'render')の場合、ポートレットアクションクロージャにマップを返すようにすることでモデルを返すことができます。モデルは、次のルールを使用してビューに渡されます(前の順序で)。

  1. 'XXX / xyz.gsp'ここで、'XXX'はポートレットの名前(例:XXXPortlet.groovy)であり、'xyz'はリクエストの'action'パラメーターの値です。

  2. 'XXX / MODE.gsp'ここで、'XXX'はポートレットの名前(例:XXXPortlet.groovy)であり、'MODE'は現在のポートレットモード(例:'view')です。

  3. 'XXX / render.gsp'

これまでのところ、このコードを介して特定のアクションをトリガーすることができました。

<form method="post" action="${portletResponse.createActionURL()}">
    <input type="hidden" name="action" value="testPage"/>
    <input type="submit" value="action">
</form>

これにより、コードブロックがトリガーされます。

 def testPage = {
    println "TESTPAGE METHOD"
 }

ただし、その後は、XXX / testPage.gspとは異なり、常にView.gspをレンダリングします。

さらに、createActionURL()の代わりにcreateRenderURL()を使用しようとしましたが、ポートレットは空白のページをレンダリングし、検索しようとしているページをログで見つけることができないようです。

これに関するどんな助けも素晴らしいでしょう、ありがとう!

4

1 に答える 1

0

最後に、プラグイン groovy に飛び込んでそれを理解し、問題を抱えている他の人のために答えを文書化したい. アクションとして portletResponse.createRenderURL() を使用する必要があり、さらに、呼び出されたメソッドからマップを返す必要があります。

次に例を示します。

<form method="post" action="${portletResponse.createRenderURL()}">
    <input type="hidden" name="action" value="testPage"/>
    <input type="submit" value="submit">
</form>

次のコードを呼び出して、XXX/testPage.gsp ビューにレンダリングします。

def testPage = {
    println "TESTPAGE METHOD"
    ['PageProperty1':'foo', 'PageProperty2':'bar']
}

ここで注意すべき重要な点は、createRenderURL() は action パラメーターの値で指定されたクロージャーを呼び出し、そのページが存在する場合はそのページにリダイレクトすることです。一方、createActionURL() は単にクロージャーを呼び出してビューにリダイレクトします。 gsp。

于 2012-06-21T13:49:32.483 に答える