Русскоязычное сообщество Groovy & Grails' Journal (original) (raw)
Sunday, April 22nd, 2012
12:17 am
[sofiamoon]
Проблема с Ajax Пробывал по гайду из книги:
Код представления:
[**Код (открыть)**]
Random Quote<g:javascript library="prototype"/>
-
<g:remoteLink action="ajaxRandom" update="quote">
Next Quote
-
<g:link action="list">
Admin
${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]
Хочется сделать 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
Thursday, July 15th, 2010
10:27 pm
[jonny81]
Юнит тестирование контроллера Пытаюсь разобраться с тестами контроллеров.
Сделал как в примере petclinic. Тесты отваливаются с NullPointerException в GrailsDomainConfigurationUtil.class на строке
boolean hasHibernate = PluginManagerHolder.getPluginManager().hasGrailsPlugin("hibernate");
Попытался запустить тесты из примера Perclinic (grails test-app). Два теста завершаются с ошибкой NullPointerException.
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.
Помогите с решением вопросов:
Что нужно указать в классе, чтобы создавалось поле INT(10) UNSIGNED? Т.е. хочу сделать беззнаковое поле.
Хочу сделать поле типа LONGBLOB. Модель следующая:
class MailAttachment
{
Byte[] file;
static constraints = {
file(maxSize: 16777216);
}
}
Grails упорно создает в базе данных поле file типа TINYBLOB. Значения maxSize пробывал вплоть до 2^31.
- Хочу указать модели, что бы использовалось каскадное удаление. Сейчас код выглядит следующим образом:
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
Не пойму в чем дело. Никто с таким не сталкивался?