嗨,我正在开发一个有奇怪问题的应用程序。该应用程序在本地 tomcat 和远程 tomcat 部署中都可以正常工作,但在某些模块上,url 上下文会发生变化。
这是其中一个例子:
首先,我有这个Web.xml
以消除疑问:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
我有以下表格:
<form name="cra" th:action="@{'/customer/relations/add/'}" method="POST">
<input type="hidden" name="craAcctCustNbr"/>
<input type="hidden" name="craChildAcctCustNbr"/>
</form>
这是由javascript调用的。请注意,我使用的是 Thymeleaf 标签。通常这会修复 url,使其位于应用程序的上下文中。
现在在我的本地实例中,这转化localhost:8080/customer/relations/add
为我的 spring mvc 控制器就好了。但是,在应用程序在上下文中的远程 tomcat 部署中,testapp
它应该转换为XX.XX.XXX.XX:8080/testapp/customer/relations/add
. 情况并非如此,而是这样做:XX.XX.XXX.XX:8080/customer/relations/add
,然后产生带有 message 的 404 The requested resource (/customer/account-relations/add/) is not available.
。应用程序的其余部分在远程部署服务器上运行良好并保持在上下文中。
经过检查,当我打开页面并检查源时,它被正确定义为:
<form name="cra" method="POST" enctype="application/x-www-form-urlencoded" action="/testapp/customer/relations/add/">
<input type="hidden" name="craAcctCustNbr" />
<input type="hidden" name="craChildAcctCustNbr" />
</form>
但是,当动作发生时,它会进入我刚刚解释的内容。
我无法检查应用程序日志,我不确定这是 tomcat 问题、spring 安全问题还是 thymeleaf 问题。
关于我如何解决这个问题的任何线索?否则我将不得不坚持访问远程日志,这将花费我一些时间来获取访问它们的凭据。