- включение фрагментов страницы в php осуществляется функцией include: например:
- но в шаблонах twig php'ая функция include не работает, вместо нее следует использовать собственную функцию include, например:
указанный фрагмент должен находиться в каталоге app/Resources/views, в содержащемся в нем каталоге commons, начальные двойные двоеточия говорят о том, что не указано имя контроллера и действия (пример взят из сайта, разработанного на Symfony2), если указать имя контроллера и действия фрагмент должен находиться в привычном в этом случае для Symfony2 месте
- сервисы и другие объекты, определяемые в spring-приложении средствами файлов *-context.xml, в grails-приложении определяются с помощью Spring Bean DSL, определение должно располагаться в файле resources.groovy в каталоге conf/spring grails-приложения или grails-плагина (так же существует возможность определения объектов с помощью xml, при этом файл называется resources.xml), ниже пара примеров определения объектов:
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;
import biz.pokrovskoe.cmis.gclient.services.Repository;
import biz.pokrovskoe.cmis.gclient.services.RepositoryConnectionService;
beans =
{
// Здесь создается фабрика сессий с интерфейсом SessionFactory, используя
// статический метод newInstance() класса SessionFactoryImpl
repositorySessionFactory(SessionFactoryImpl) {bean ->
bean.factoryMethod = "newInstance"
}
// Создается соединение класса RepositoryConnectionService с конструктором по умолчанию
repositorySessionFactory(SessionFactoryImpl) {bean ->
bean.factoryMethod = "newInstance"
}
// Создается соединение класса RepositoryConnectionService с конструктором по умолчанию
// и устанавливается свойства sessionFactory ссылкой на предыдущий определенный объект
repositoryConnection(RepositoryConnectionService) {
sessionFactory = ref("repositorySessionFactory")
}
// Объект класса Map, содержит свойства соединения с репозиторием
def repositoryParameters = [
'username': '******',
'password': '******',
'url': 'http://localhost:18080/alfresco/cmisatom ,
repositoryId : '72549849-e033-4a8b-806f-7a377522ef76'
]
// Объект класса Repository создается с помощью метода createSession, которому передается в качестве
repositoryConnection(RepositoryConnectionService) {
sessionFactory = ref("repositorySessionFactory")
}
// Объект класса Map, содержит свойства соединения с репозиторием
def repositoryParameters = [
'username': '******',
'password': '******',
'url': 'http://localhost:18080/alfresco/cmisatom ,
repositoryId : '72549849-e033-4a8b-806f-7a377522ef76'
]
// Объект класса Repository создается с помощью метода createSession, которому передается в качестве
// параметров объект со свойствами соединения, определен выше
repository(repositoryConnection: "createSession") {bean ->
bean.constructorArgs = [repositoryParameters]
}
}
repository(repositoryConnection: "createSession") {bean ->
bean.constructorArgs = [repositoryParameters]
}
}
каждая конструкция, определяющая объект начинается с его имени, используемом в дальнейшем для привязки объектов к контроллерам. Объект со свойствами соединения определен как def и не может быть использован для установки в качестве значений свойств сервисов или контроллеров grails-приложения, предназначен исключительно для инициализации других объектов в файле resources.groovy.
- приведенный выше пример, к сожалению, все равно не работает, но уже на этапе исполнения приложения, причина, видимо, кроется в приведении с помощью загрузчиков классов groovy классов, используемых opencmis, к виду привычному groovy. Ошибка времени выполнения возникает из-за несоответствия типов класса Date. Решение проблемы я подсмотрел в open-cmis-plugin, что-то подобное я и пытаюсь сделать, только в отличии от open-cmis-plugin, собираюсь упростить взаимодействие с репозиторием, используя динамическую природу groovy. Итак, решение заключается в исключении из обработки библиотек при определении зависимостей от opencmis, обратите внимание на конструкции exludes:
compile
(
'org.apache.chemistry.opencmis:chemistry-opencmis-client-api:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
excludes "jaxws-rt"
}
runtime (
'org.apache.chemistry.opencmis:chemistry-opencmis-client-api:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-client-bindings:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
excludes "jaxws-rt"
}
'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
excludes "jaxws-rt"
}
runtime (
'org.apache.chemistry.opencmis:chemistry-opencmis-client-api:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-client-bindings:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
excludes "jaxws-rt"
}
Комментариев нет:
Отправить комментарий