【问题标题】:Conflict with @MountPath at Apache Wicket与 Apache Wicket 的 @MountPath 冲突
【发布时间】:2018-08-16 18:55:48
【问题描述】:

我正在使用带有@MountPath 的 Apache Wicket 注释,下面的页面路径为“/#{id}/#{action}”,在 /webapp 中我具有以下结构: css/style.css img/logo.png

当我尝试访问页面时出现错误,因为 Wicket 尝试将 style.css 和 logo.png 解析为页面而不是静态文件。

我必须绕过资源文件夹 /css 和 /img,我该怎么做?

【问题讨论】:

  • 如果您尝试在此级别操作路径,您确定 Wicket 是适合您的框架吗?您可以尝试为此创建自己的IRequestMapper,但#{action} 位只是向我尖叫“安全漏洞”
  • @JeroenSteenbeeke 我试图创建一个请求映射器来解决,但没有成功。我解决了这个问题,在 web.xml 中创建了一个过滤器,并将 /css 和 /img 文件移动到 /commons 文件夹,现在过滤器绕过对 /commons/* 文件夹的请求。您如何看待这个解决方案?
  • 这将是解决它的一种方法,但这并不能解决您为什么首先需要此设置?您的页面将处理具有 0-2 段路径的每个 URL,这意味着您将页面用作控制器,并且是一个非常广泛的控制器。这不是页面的用途。它可以工作,但您可能通过使用 Wicket 来使事情变得过于复杂,所以我很想知道您的用例是什么以及您打算如何使用它。

标签: java tomcat wicket


【解决方案1】:

您面临的问题是您在根/索引上安装了一个页面,即“/”,带有两个可选参数。 Wicket 将使用该页面来处理对“/”、/“one”、“/one/two”的请求。您拥有的静态资源将被匹配,因为它们有两个段,即它们将匹配两个可选参数。

您可以通过在 web.xml 中的 WicketFilter 的 ignorePaths 参数中列出“/css”和“/img”来解决/解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-20
    • 2019-07-11
    • 1970-01-01
    • 2011-12-22
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多