Русскоязычное сообщество Groovy & Grails' Journal (original) (raw)

Sunday, April 22nd, 2012

12:17 am
[sofiamoon]

Проблема с Ajax Пробывал по гайду из книги:

Код представления:

[**Код (открыть)**]

Random Quote

<g:javascript library="prototype"/>

${quote.content}

${quote.author}

Код из контроллера:

[**Код (открыть)**]

def ajaxRandom = {

def randomQuote = quoteService.getRandomQuote()

render "${randomQuote.content}" +

"

${randomQuote.author}

"

}

Когда я вызываю метод ajaxRandom из контроллера, вместо обновления контента

, всё это дело
рендерится на отдельную страницу. Возможно информацияв книге устарела и надо делать как-то по-другому, не решений
не нашёл.
Происходит следующие:

Спасибо за внимание!

Grails 2+, Windows 7, на mac os X тоже пробовал, та же история.

Thursday, November 10th, 2011

10:15 am
[ext_873298]

GRAILS: spring-security-core plugin and locale Всем привет!
Решил прибегнуть к помощи студии )) тк уже второй день бьюсь безрезультатно...

Работаю над мультиязычным(интернациональным) пректом и язык (локализация) используется в качестве первого параметра URI. Кроме того, вопрос возникает при интеграции со Spring Security Core Plugin. Но об этом дальше...

Итак, URLs:

http://domain.com:8080/app/en/controller/action/id
http://domain.com:8080/app/de/controller/action/id
http://domain.com:8080/app/fr/controller/action/id

Здесь мой UrlMappings.groovy:

`class UrlMappings {

static mappings = {

    name login:    "/$lang/login/$action"    { controller = 'login' }
    name logout:   "/$lang/logout/$action"   { controller = 'logout' }
    name register: "/$lang/register/$action" { controller = 'register' }

    "/$lang/$controller/$action?/$id?" {
        constraints {
        }
    }

    name index: "/$lang" { controller = 'index' }
    "/" { controller = 'index' }

    "500" { controller = 'errors' }
}
}

Здесь LanguageFilters.groovy

class LanguageFilters {

def filters = {
    languageCheck(controller: '', action: '') {
        before = {
            if (params.lang == null) {
                redirect controller: params.controller, action: params.action,
                         params: ['lang': request.locale.language.toString()] + params
            }
        }
    }
}
}

Здесь Config.groovy: grails.plugins.springsecurity.failureHandler.defaultFailureUrl = "/$lang/login/authfail?login_error=1"
grails.plugins.springsecurity.failureHandler.ajaxAuthFailUrl = "/$lang/login/authfail?ajax=true"
grails.plugins.springsecurity.successHandler.defaultTargetUrl = "/$lang"
grails.plugins.springsecurity.successHandler.ajaxSuccessUrl = "/$lang/login/ajaxSuccess"
grails.plugins.springsecurity.auth.loginFormUrl = "/$lang/login/auth"
grails.plugins.springsecurity.auth.ajaxLoginFormUrl = "/$lang/login/authAjax"
grails.plugins.springsecurity.logout.afterLogoutUrl = "/$lang"
grails.plugins.springsecurity.adh.errorPage = "/$lang/login/denied"
grails.plugins.springsecurity.adh.ajaxErrorPage = "/$lang/login/ajaxDenied"

СОбственно, вопрос. Без спринга все работает как надо, но URI's
типа /login/denied, /login/authfail и пр,

вылетают из общей схемы и не работают.
Может быть и не правильно, но решил добавить в конфиге (вверху) доп
параметр языка $lang, при этом урлы оживились, но фильтром язык не
заполняется. Ошибка: Error 2011-11-10 08:34:17,257 ["http-bio-8080"-exec-9] ERROR i18n.ParamsAwareLocaleChangeInterceptor  - Error intercepting locale change: Locale value "[:]" contains invalid characters
Message: Locale value "[:]" contains invalid characters

В общем, танцы с бубнами не увенчались - решил обратиться к сообществу.
Как ПРАВИЛЬНО интегрировать спринг в подобного рода приложение ?
Есть у кого-либо опыт в подобных проектах ?
Заранее спасибо !

`

Thursday, July 7th, 2011

8:59 pm
[kefirfromperm]

Greetim.com - прототип dating'а на Grails Greetim — это прототип сайта знакомств с оригинальным алгоритмом поиска партнеров. Написан на Grails+PostgreSQL. Подробней он описан в моем посте http://kefirfromperm.livejournal.com/328087.html

Однако сейчас у меня ни времени ни уже желания заниматься его развитием особого нет. На данный момент можно сказать что проект провалился. Однако, это полноценное работающее приложение на Grails с несколькими интересными фичами. А самое главное, что код опубликован на GitHub.

https://github.com/kefirfromperm/dating

Вы можете использовать его как учебное пособие или для построения своего приложения. А можете помочь проекту вылезть из ямы. Ну и конечно это уникальная возможность самоутвердиться, путем высмеивания чужого кода :)

зы Если кому-то понадобится код под другой лицензией, обращайтесь ко мне.

Tuesday, January 18th, 2011

11:26 am
[oneladystanding]

Фильтрация данных по параметрам - требуется помощь Здравствуйте. У меня такая проблема....
Есть две таблицы (domain - класса) связанные соотношением mxn.
Второя класс - некое численной значение, первый класс его параметры - месяц, год и пр. параметров нефиксированное число, поэтому пришлось завести класс, чтобы к значению можно было добавить в любой момент параметр.

class ParamValue {
ParamType paramType
String paramValue
....
}

class IndicValue {
Float indicValue
...
}

Класс связки -
class IndicParam {
ParamValue paramValue
IndicValue indicValue
....
}

Есть некий список параметров, выбранный пользователем - paramList
Нужно выбрать такие показатели IndicValue, у которых есть ВСЕ параметры paramValue из paramList.

Как это сделать правильно ?

Рассматривала вариант создания хранимой процедуры (база MySQL). Насколько я разобралась, там нельзя передавать в процедуру неопределенной кол-во параметров (список) и получать, опять же, список значений на выходе (хотела использовать типы set или enum или еще что то в этом роде).

Помогите советом

Current Mood: upset

Tuesday, January 4th, 2011

9:16 pm
[jonny81]

Организация subdomain Давайте поговорим о том, как лучше реализовать поддомены в одном проекте на Grails.

1) Хочется что-то вроде:

а) в debug режиме иметь ссылки
localhost:8080/sub1/controller/action
localhost:8080/sub2/controller/action

б) в релиз режиме иметь ссылки
sub1.domain.com/controller/action
sub2.domain.com/controller/action

Сделать работу таких ссылок через UrlMappings проблем нет. Есть проблема как нормально генерировать такие ссылки использую стандартный (g:link controller="" action="") и прочие теги.

2) Т.к. имена контроллеров обязательно должны быть разные, то я планирую в их названии использовать префикс поддомена. Будет, например, два контроллера Sub1AdminController и Sub2AdminController.
Хочется, чтобы в ссылках эти префиксы были убраны (и при использовании g:link тоже):

Нехочется, ненравится:
localhost:8080/sub1/sub1Admin/
localhost:8080/sub2/sub2Admin/

Хочется, нравится:
localhost:8080/sub1/admin/
localhost:8080/sub2/admin/

Т.е. опять получается, что обработку таких "правильных" ссылок я могу сделать через UrlMappings:

class UrlMappings { static mappings = { "/$project/$pController/$action?/$id?" { controller = {"${params.project}${params.pController}"} } } }

а вот с генерацией засада. переписывать библиотеки тегов не хочу. хочется по максимуму использовать предлагаемую функциональность без расширения или замены компонентов grails.

--

Возможно кто-то уже сталкивался с этой проблемой. Или есть какие-то идеи. Пишите.

Saturday, November 27th, 2010

12:47 am
[itserg2008]

Thursday, September 30th, 2010

12:13 pm
[jonny81]

пакетное удаление Добрый день,

Сейчас пакетное удаление реализуется следующим образом:

def results = Domain.withCriteria { // здесь какие-либо критерии }

Domain.withTransaction { results.each { it.delete(); } }

Возможно этот код объединить в Grails как-то? Чтобы удаление без выборки происходило (без использования HQL с execute) ?

4:23 am
[drpadawan]

Экспериментирую с GSP TagLib.

Хочется сделать Tag. На выходе для этого Tag'a генерируется Html. Однако хотелось бы иметь возможность пробежаться по внутренним gsp-узлам перед генерацией. Не знаю как это сделать, а в документации довольно тривиальные вещи - http://grails.org/Dynamic%20Tag%20Libraries. Максимум рассказывается про доступ к внутренним узлам через Closure, чего мне недостаточно (или я ошибаюсь?).

Friday, July 23rd, 2010

12:44 pm
[jonny81]

Optimistic Locking Помогите разобраться с оптимистичными блокировками.

Простая модель для тестирования:

class Registration { Date dateRequest; }

в таблице есть одна запись с id = 1

( Read more...Collapse )

Thursday, July 15th, 2010

10:27 pm
[jonny81]

Юнит тестирование контроллера Пытаюсь разобраться с тестами контроллеров.
Сделал как в примере petclinic. Тесты отваливаются с NullPointerException в GrailsDomainConfigurationUtil.class на строке
boolean hasHibernate = PluginManagerHolder.getPluginManager().hasGrailsPlugin("hibernate");

Попытался запустить тесты из примера Perclinic (grails test-app). Два теста завершаются с ошибкой NullPointerException.

( Read more...Collapse )

Wednesday, July 7th, 2010

4:11 pm
[monzdrpower]

Господа, есть нужда прочитать файл RTF.
Есть мнение, что на groovy это сделать будет проще чем на java.
Если это не так - скажите =) и киньте полезными ссылками, если у кого есть ..
спасибо.

4:25 pm
[drpadawan]

Grails Criteria Builder: кэширование Criteria Здравствуйте,

Можно ли кэшировать экземпляры класса Criteria, которые создаются с помощью DSL Criteria Builder?

Например, я могу кэшировать так, но без Builder'a:

def criteria = MyDomainObj.createCriteria()
criteria.add(Restrictions.'in'(domainClass.identifier.name, idsList))

Thursday, June 17th, 2010

5:09 pm
[jonny81]

интерфейс GrailsClass Добрый день,

Помогите разобраться.

В Grails все классы должны реализовывать интерфейс GrailsClass. Конкретно меня интересуют методы getFullName(), getPackageName(), getShortName() и др. подобные.

Я создаю новый объект класса User (класс-домен) и пытаюсь вызвать метод getShortName(). Программа падает с сообщением:

groovy.lang.MissingMethodException: No signature of method: static User.getShortName() is applicable for argument types: () values: []

Код разумеется простой:

def domain = new User(firstName: 'Andrey', lastName:'Rychkov'); println domain.getShortName();

Я в расстерянности....

Tuesday, June 1st, 2010

4:00 pm
[drpadawan]

Reusing controllers in Grails В ходе изучения Grails возник еще один вопрос.

Теоретически, парадигма MVC должна позволять создание нескольких представлений одной модели.

Вопрос №1 Как этого добиться в Grails?

Конкретно, мне не нравится что представление зависит от поведения. Это когда в контроллерах присутствуют ссылки на конкретные представления.

Вопрос №2 Как лучше избежать такой зависимости?

Monday, May 24th, 2010

7:55 pm
[drpadawan]

Вопросы про actions и связанные объекты Здравствуйте,

Вопрос №1

Есть ли хороший способ узнать предыдущую action? Ситуация: есть chain из таких акций:
a) startProcess,
b) action1,
c) action2.
Т.е. startProcess запускает chain из action1, action2.

В конце action2, хочется вернуться туда откуда всё началось, то есть туда откуда стартанул startProcess.

Сам chain не предоставляет такой возможности. Поэтому я решил через модель передавать название контроллера и акции чтобы потом сделать редирект. Только увы - не понятно как определить исходный action. Свойство actionName, даже через перехватчик, всегда установлено на startProcess.

Через request не хочется передавать, т.к. это потенциальная дыра.

Вопрос №2

Есть 2 доменных класса, связанных между собой 1-к-1. Один из них владелец (hasOne), другой - принадлежащий (belongsTo). Есть также ограничения в обоих классах на то, что связь должна быть не-null. Вроде бы вполне логичное ограничение, когда объект не может существовать без другого.

Дефолтный scaffolding не позволяет никак работать с такой моделью, потому что не может по-отдельности создать объекты из-за ограничений. Конечно, можно забыть про дефолтный скафолдинг и про вид, который нагенерирует сам grails, и писать свой вид и контроллер - в которых связываются и редактируются сразу два объекта.

Другая ситуация - это иметь раздельные контроллеры и виды, но переключаться через chain, и сохранять объекты каскадно в контроллере класса-владельца (т.к. объект класса-потомка сохранять нельзя, ведь владелец может к этому моменту еще не быть в базе).

Как вообще быть? Неужели никто не задумывался над редактированием разветвленной модели?

Friday, May 21st, 2010

9:20 pm
[jonny81]

domain, mapping Пытаюсь разобраться с моделями и БД. Таблицы создаются автоматически на основе класса модели. Использую MySql/InnoDB.

Помогите с решением вопросов:

  1. Что нужно указать в классе, чтобы создавалось поле INT(10) UNSIGNED? Т.е. хочу сделать беззнаковое поле.

  2. Хочу сделать поле типа LONGBLOB. Модель следующая:

class MailAttachment
{
Byte[] file;

static constraints = {  
    file(maxSize: 16777216);  
}

}

Grails упорно создает в базе данных поле file типа TINYBLOB. Значения maxSize пробывал вплоть до 2^31.

  1. Хочу указать модели, что бы использовалось каскадное удаление. Сейчас код выглядит следующим образом:

class Mail
{
static hasMany = [attachments:MailAttachment]

static mapping = {  
    attachments(cascade: 'all');  
}  

}

class MailAttachment
{
Mail mail;

static belongsTo = Mail;  

}

не работает... т.е. при удалении (вручную) записи из таблицы 'mail' СУБД ругается, что имеются связанные записи в таблице mail_attachment. Ну и в phpmyadmin если связи посмотреть у таблицы mail_attachment, то на удаление там пустое значение стоит, а должно быть CASCADE...

p.s. grails 1.3.1

Wednesday, May 19th, 2010

10:07 pm
[jonny81]

Friday, May 14th, 2010

5:26 pm
[zlo_in_motion]

Grails и Flash Господа, подскажите пожалуйста, как заставить работать swf файл в GSP?
swf имеет ряд внешних файлов (xml-конфигурация и набор картинок).
Поставил плагин flash-player, использую такую вставку:
<g:flashPlayer id="test"
varFile="${resource(dir: 'flash', file: 'photowidget.swf')}" paramAllowScriptAccess="always" flashvars="feed=${resource(dir:'flash',file:'photowidget.xml')}"/>

все файлы находятся в подпапке проекта flash, на странице плеер отображается, но не подгружаются ресурсы.

Tuesday, May 4th, 2010

5:46 pm
[itserg2008]

Новый сайт на платформе grails - develosaur.ru Мы открыли новое сообщество разработчиков программного обеспечения - develosaur.ru
Приглашаем авторов статей по grails и groovy принять участие в развитии сообщества и популяризации стека технологий, основанных на java/groovy!

Сайт написан полностью на платформе grails.
Архитектура системы: ОС Ubuntu Server + Apache Web Server + Apache Tomcat + MySQL + Grails 1.2.2

Wednesday, April 7th, 2010

5:56 pm
[myalfresco]

Grails и русские символы Всем привет

Пишу небольшое приложение - возникла проблема с кодировками.

Есть форма payWP.gsp

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="layout" content="main">

<g:form method="post">
  <input type="hidden" name="id" value="${di?.id}" />
  <g:if test="${nickIsOk}">
    <input type="text" name="nick" value="${params.nick}" readonly="readonly" />
  </g:if> 
  <g:if test="${!nickIsOk}">
    <input type="text" name="nick" value="${params.nick} />

Ввожу русское название нажимаю на кнопку - в контроллере делается POST запрос к другому сервлету и затем делается redirect на эту же страницу: redirect(view : "payWP", params:[id: params.id, nick: params.nick, res:res])

В итоге в поле nick образуется абракадабра вида:Тест
А url выглядит как ../payWP/43?...&nick=Тест&res=-7

Все исходники в UTF-8
Среда исполнения Tomcat/Linux, Grails 1.2.1, jdk 1.5

Для запуска Tomcat и для компиляции grails использую -Dfile.encoding=UTF-8

Не пойму в чем дело. Никто с таким не сталкивался?