Grails 2.0: использование службы в функции JavaScript в GSP - PullRequest
0 голосов
/ 19 декабря 2011

Мне просто интересно, как я могу вызвать метод службы из функции внутри GSP. Я попробовал следующее, но это не похоже на работу:

<%@ 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. Не уверен, как этого добиться, или если это вообще возможно. Любая помощь приветствуется.

Большое спасибо

Jonas

1 Ответ

3 голосов
/ 19 декабря 2011
  1. loadClass().newInstance() создает новый экземпляр объекта, а не Spring Bean (я имею в виду, он не привязан к инфраструктуре Grails), я уверен, что это не то, что вы хотите
  2. Вы можете передать обслуживание с вашего контроллера, например render(model: [myService: myService]) (вы должны объявить его на рычаге контроллера)
  3. Гораздо правильнее передать результат этого вызова, а не сам сервис. Я имею в виду: render(model: [isSomethingAvailable: myService.isSomethingAvailable]) и проверить это как if ($(isSomethingAvailable)) {
  4. Обратите внимание, что gsp обрабатывается на стороне сервера, а не на уровне клиента. Так что не имеет значения, где вы используете свою переменную - в коде JavaScript или HTML-коде. А также, вы можете использовать gsp if tag: <g:if test="${isSomethingAvailable}"> вместо подготовки javascript для проверки значения на стороне клиента (потому что вы уже знаете результат)
...