2017-03-23 6 views
0

SELECTを変更したときに部分テンプレートをレンダリングしたいだけです。私はonchangeとremotFunctionを試しましたが、コンパイルはしません。私が書いたGSPでは Grailsがselectの変更に部分テンプレートをレンダリング

<g:select name="sawMill" from="${prodBuffer}" value="" onchange="${remoteFunction(action: 'availableProducts')}"/> 

とコントローラで

エラー

def availableProducts() { 
    render(template:"AvailableProductData", model:[prodBuffer: getBufferList()]) 
} 

Class 
groovy.lang.MissingMethodException 
Message 
    Request processing failed; nested exception is org.grails.gsp.GroovyPagesException: Error processing GroovyPageView: [views/orders_and_Store/list.gsp:154] Error executing tag <g:form>: Error evaluating expression [remoteFunction(action: 'availableProducts')] on line [24]: No signature of method: D__Grails_projects_torntrading_grails_app_views_orders_and_Store_list_gsp.remoteFunction() is applicable for argument types: (java.util.LinkedHashMap) values: [[action:availableProducts]] 
Caused by 
    No signature of method: D__Grails_projects_torntrading_grails_app_views_orders_and_Store_list_gsp.remoteFunction() is applicable for argument types: (java.util.LinkedHashMap) values: [[action:availableProducts]] 

が、私はさまざまなソリューションをたくさん見てきましたしかし、それらはより複雑です、私はちょうど選択が変化したときにgspの一部をレンダリングしたいと思います。私はパラメータが必要ではないと思います。

+0

Grails 3を使用している場合は、この依存関係をアプリケーションに追加する必要があります(推奨されません)。https://plugins.grails.org/plugin/grails/ajax-tags –

答えて

1

Grailsのどのバージョンをお使いですか?ない場合CREATELINK文でこれを変更する、私はあなたのコントローラがproductController命名されたと仮定しました

<head> 
    <script type="text/javascript"> 
     function availableProducts(){ 
      $.ajax({ 
       url:'${g.createLink(controller:'product', action:'availableProducts')}', 
       data: [sawMill], 
       type: 'get' 
     }).success(function (data) { $('#divToUpdate').html(data); }); 
} 
    </script> 
<body> 
    <g:select name="sawMill" from="${millList}" value="" onchange="availableProducts()"/> 

    <div id="divToUpdate"></div> 
</body> 

remoteFunctionはあなたが好きなあなた自身のAJAX機能を使用することができ2.4.xの

で廃止されました。

テンプレートで更新する画面の領域を関数に伝える必要があります。この場合、divToUpdateというIDでdivを更新していて、再びgspに合わせて変更します。

コントローラーは、このコントローラーの他のgspファイルと同じディレクトリに_AvailableProductDataという名前のテンプレートがあると仮定して、正常に動作するはずです。

+0

これはうまくいきました。ページはレンダリングされますが、期待通りに動作しませんでした。私は選択したsawMillを – larand

+0

のようなフィルタで使用するために使いたかった。うまくいけば、エラーはなくなり、ページはレンダリングされるが、期待どおりに動作しなかった。私は選択されたsawMillを larand

+0

sawMillの値がavailableProductsアクションに送信されるように更新されたので、今すぐparams.sawMillで取得できます。 –

関連する問題