gpt4 book ai didi

java - 将 Tapestry 部分集成到现有的 Web 应用程序中

转载 作者:行者123 更新时间:2023-12-01 18:41:27 24 4
gpt4 key购买 nike

我有一个仅使用 servlet 和 JSP 的现有 Web 应用程序。

现在我正在使用 Tapestry 5 构建我的 Web 应用程序,但我想知道是否有一种方法可以将 Tapestry 集成到我的应用程序中的几个 URL。

可以这样做吗?我在 Tapestry 文档中找不到它。

部分解决

好的,这就是我到目前为止所做的。我将 Tapestry 5 网站上的 JARS 添加到了/WEB-INF/lib 文件夹,并且还添加了 Hibernate validator 和 Hibernate ORM 的 JARS,因为 Tomcat 抛出了 ClassNotFoundErrors。

我修改了 web.xml 文件并添加了以下内容:

这就是我认为解决我的问题的方法。然而我遇到了一个问题:我现有的 Web 应用程序没有使用 Maven 进行依赖管理。因此,我已将 Tapestry5 下载中的所有 JAR 包含到 WEB-INF 文件夹内的 lib 文件夹中。使用以下信息修改了我的 web.xml 文件:

<context-param>
<param-name>tapestry.app-package</param-name>
<param-value>be.blauweregen.ledenplatform</param-value>
</context-param>
<filter>
<filter-name>app</filter-name>
<filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>app</filter-name>
<url-pattern>/tapestry5/*</url-pattern>
</filter-mapping>

据我了解,只有 rootpath/tapestry5 的 URL 才会被 Tapestry 处理。

然后,我将一个包 be.blauweregen.ledenplatform.services 添加到 Eclipse 内的 src 文件夹,并向该包添加一个类文件 AppModule.java ,其中包含以下内容:

package be.blauweregen.ledenplatform.services;

import org.apache.tapestry5.SymbolConstants;
import org.apache.tapestry5.ioc.MappedConfiguration;
import org.apache.tapestry5.ioc.annotations.Contribute;
import org.apache.tapestry5.ioc.services.ApplicationDefaults;
import org.apache.tapestry5.ioc.services.SymbolProvider;

public class AppModule {
@Contribute(SymbolProvider.class)
@ApplicationDefaults
public static void applicationDefaults(MappedConfiguration<String, String> configuration) {
configuration.add(SymbolConstants.APPLICATION_FOLDER, "tapestry5");
}
}

现在,当我在本地 Tomcat 7.0.42 服务器上的 Eclipse 中启动应用程序时,Tomcat 启动时出现此异常:

SEVERE: Exception starting filter app
java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Class.java:2521)
at java.lang.Class.privateGetPublicMethods(Class.java:2641)
at java.lang.Class.getMethods(Class.java:1457)
at com.zeroturnaround.javarebel.Ce.b(JRebel:461)
at com.zeroturnaround.javarebel.Ce.a(JRebel:183)
at com.zeroturnaround.javarebel.Ce.getMethods(JRebel:611)
at java.lang.Class.getMethods(Class.java)
at org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl.<init>(DefaultModuleDefImpl.java:115)
at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:131)
at org.apache.tapestry5.ioc.RegistryBuilder.add(RegistryBuilder.java:159)
at org.apache.tapestry5.ioc.IOCUtilities.addModulesInList(IOCUtilities.java:137)
at org.apache.tapestry5.ioc.IOCUtilities.addModulesInManifest(IOCUtilities.java:107)
at org.apache.tapestry5.ioc.IOCUtilities.addDefaultModules(IOCUtilities.java:77)
at org.apache.tapestry5.internal.TapestryAppInitializer.<init>(TapestryAppInitializer.java:124)
at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:103)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 29 more

找不到解决此问题的方法。

最佳答案

一种选择是让 Tapestry 处理根上下文 (/),然后 tell it which paths to ignore .

另一个选择是 configure tapestry to run inside a subfolder

关于java - 将 Tapestry 部分集成到现有的 Web 应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827563/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com