2011-12-19 48 views
0

我只是想知道如何從GSP中的函數中調用服務的方法。我試過以下,但它似乎並沒有工作:Grails 2.0:在GSP中使用javascript函數中的服務

<%@ page import="com.company.MyService" %> 
<% 
    def myService =grailsApplication.classLoader.loadClass('com.company.MyService').newInstance() 
%> 
<html> 
<head> 
[...] 
<script language="javascript"> 
    function myFunction() { 

     if (${myservice.isSomethingAvailable()}) { 
      [...] 
     } 
    } 
</script> 

我對JavaScript和Grails很新。不知道如何實現,或者甚至可能。任何幫助讚賞。

非常感謝

喬納斯

回答

3
  1. loadClass().newInstance()創建對象的新實例,而不是春天豆(我的意思是不依賴於Grails的基礎設施),我敢肯定,這不是你想要
  2. 什麼
  3. 你可以通過你的控制器的服務,如render(model: [myService: myService])(你必須在控制器槓桿聲明)
  4. 更正確的方法是通過此調用的結果,而不是服務本身。我的意思是:render(model: [isSomethingAvailable: myService.isSomethingAvailable])並測試它爲if ($(isSomethingAvailable)) {
  5. 請注意,gsp在服務器端處理,而不是客戶端大小。因此,無論您在哪裏使用變量 - 在JavaScript代碼或HTML代碼上。而且,您可以使用GSP如果標籤:的<g:if test="${isSomethingAvailable}">而不是準備JavaScript來檢查客戶端的值(因爲你已經知道結果)
+0

+1回答3 – Philippe 2011-12-19 11:34:24

+0

非常感謝......傳入來自控制器的變量像夢一樣工作。 – Jonas 2011-12-19 23:32:08