5

我用 PrettyFaces 重写错误页面不适用于 ah:link,我不明白为什么。

我的链接应该重定向到login.xhtml并且应该是/Login.

发生了什么事,我错过了什么吗?

我的重写规则导航:

<navigation-rule>
    <from-view-id>/pageNotFound.xhtml</from-view-id> 
    <navigation-case>
        <from-outcome>login</from-outcome>
        <to-view-id>/login.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>

我的 web.xml 用于错误页面处理和漂亮的过滤器配置:

<error-page>
    <error-code>404</error-code>
    <location>/pageNotFound.xhtml</location>
</error-page>
<filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>INCLUDE</dispatcher>
</filter-mapping>

我的漂亮配置.xml:

    <url-mapping id="login">
    <pattern value="/Login" />
    <view-id value="/login.xhtml" />
</url-mapping>

我的 pageNotFound.xhtml:

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found.">
    <h:link value="Login page" outcome="login" />
</rich:panel>
4

2 回答 2

6

基本上,您将 Prettyfaces 的视图 ID 与 JSF 的视图 ID 混合在一起。您不能在 JSF 上下文中直接使用此 id,您需要告诉它这是一个漂亮的id。这应该有效:

<h:link value="Login page" outcome="pretty:login" />

此外,如果您更喜欢使用 JSF id,您可以直接使用/login

<h:link value="Login page" outcome="/login" />

Prettyfaces 的过滤器应该考虑到它是一个映射的 id 并直接重定向到您的/Login url。

于 2013-10-08T13:11:14.580 回答
0

首先,您不能将 JSF 导航规则与 PrettyFaces Mappings 混合使用。您必须使用其中一个。

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found.">
    <h:link value="Login page" outcome="login" />
</rich:panel>

我认为“登录”应该改为“/登录”,否则 JSF 可能无法解决它。我可能是错的。

<rich:panel style="width:50%;margin-top:100px;" header="Page Not Found.">
    <h:link value="Login page" outcome="/login" />
</rich:panel>
于 2013-10-08T20:28:30.037 回答