У меня есть несколько разных проектов, которые в основном используют один и тот же javascript / css и шаблон макета. Я хочу перенести все это в мой проект tapestry-common-lib и ссылаться на него оттуда.
У меня есть другие общие компоненты в моем tapestry-common-lib, но, похоже, не получается заставить макет работать должным образом.
В моем проекте tapestry-common-lib у меня есть CommonLayout.java в com.company.tapestrylib.components
и файл CommonLayout.tml под
com/company/tapestrylib/components
.
Я пытаюсь сослаться на форму CommonLayout на другой проект в моем Index.tml следующим образом:
<t:commonlayout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
</t:commonlayout>
Однако, когда я захожу на эту страницу, я получаю
Unable to resolve 'commonlayout' to a component class name.
Могу ли я сделать это? Могу ли я также поместить все мои общие css и javascript в jar-файл tapestry-common-lib и сослаться на них, используя, например:
<script type="text/javascript" src="${asset:context:/js/jquery-1.4.2.js}"></script>
Я осматривался и нашел множество статей о создании пользовательских компонентов и библиотек компонентов, но ни одна из них не использовала макеты так, как я пытаюсь.
UPDATE:
В настоящее время я использую другие абстрактные компоненты из моей библиотеки компонентов. Они хранятся в [root] .tapestrylib.base.
Я пытаюсь сохранить мой общий макет (Layout.java и Layout.tml) в [root] .tapestrylib.components. При попытке обратиться к этому макету из моего другого проекта, я получаю
Unable to resolve 'layout' to a component class name.
Я пытаюсь использовать это так:
<html t:type="tapestry-lib/layout" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
</html>
Это часть фактического исключения, которое я получаю:
11:28:01 ERROR RequestExceptionHandler - Processing of request failed with uncaught exception: Unable to resolve 'tapestry-lib/layout' to a component class name.
org.apache.tapestry5.ioc.internal.OperationException: Unable to resolve 'tapestry-lib/layout' to a component class name. [at classpath:com/mycompany/webapp/pages/Index.tml, line 1]
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:102)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:69)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057)
at org.apache.tapestry5.internal.pageload.PageLoaderImpl.createAssembler(PageLoaderImpl.java:218)
at org.apache.tapestry5.internal.pageload.PageLoaderImpl.getAssembler(PageLoaderImpl.java:208)
at org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:180)
at org.apache.tapestry5.internal.pageload.PageLoaderImpl$3.invoke(PageLoaderImpl.java:174)
at org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
at org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:68)
at org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1057)
at org.apache.tapestry5.internal.pageload.PageLoaderImpl.loadPage(PageLoaderImpl.java:173)
at $PageLoader_12d045be613.loadPage($PageLoader_12d045be613.java)