1

在我的 Web 应用程序中,我有一个转换器,可以从 String 转换为 java.util.LinkedHashMap(反之亦然)。当我尝试使用 Prettyfaces 时,我收到 404 resource not found 错误。这是我的设置:

首先根据这篇文章,我尝试用

@FacesConverter(forClass = LinkedHashMap.class)

我也尝试添加

<converter>
  <converter-for-class>java.util.LinkedHashMap</converter-for-class>
  <converter-class>util.UrlConverter</converter-class>
</converter>

到我的面孔配置,xml。

现在我的 pretty-config.xml 的相关代码是:

<url-mapping id="details">
<pattern value="/dataset/#{id}" />
<view-id value="/faces/details.xhtml" />
</url-mapping>

URL 重写本身有效,所以我最终在 URL:http ://server.com/appname/dataset//someID “/dataset”总是有两个“/”。如果这是我的问题的原因,那么我该如何重写这些斜杠呢?

4

1 回答 1

1

我认为/性格确实是你问题的根源。默认情况下 PrettyFaces 使用正则表达式[^/]+来匹配路径参数。/因此,如果您的路径参数包含字符,则映射将不匹配。

您应该对路径参数使用自定义正则表达式,如下所述:

http://ocpsoft.org/docs/prettyfaces/3.3.3/en-US/html/Configuration.html#config.pathparams.regex

这意味着这样的事情应该可以工作:

<url-mapping id="details">
  <pattern value="/dataset/#{ /.+/ id }" />
  <view-id value="/faces/details.xhtml" />
</url-mapping>

另一种选择是将/字符替换为转换器中的其他内容。

于 2013-02-22T06:14:03.827 回答