我可以在servlet中使用JSF导航规则进行重定向吗?

时间:2010-08-28 07:48:00

标签: jsf servlets jsf-2

我必须在我的Web应用程序中使用一些servlet。 servlet执行一些处理,然后将用户重定向到xhtml页面。

我的应用程序中已经有导航规则,我想在我的servlet中重复使用。

示例:

<navigation-case>
    <from-outcome>bookingFailed</from-outcome>
    <to-view-id>/SecureUser/Reservation/New/BookingFailed.xhtml</to-view-id>
    <redirect/>
</navigation-case>

现在在servlet中,我想使用类似的东西:

response.sendRedirect("bookingFailed");

而不是

response.sendRedirect("faces/SecureUser/Reservation/New/BookingFailed.xhtml");

我该怎么做呢?

1 个答案:

答案 0 :(得分:1)

由于servlet不在JSF上下文中运行,因此您需要自己将<navigation-case>文件中的所有faces-config.xml条目解析为Map,以便结束做起来:

response.sendRedirect("faces" + navigationCases.get("bookingFailed"));

内置的JAXP和XPath API在这方面可能很有用。

那就是说,你真的考虑在JSF上下文中而不是普通的servilla servlet中进行JSF上下文相关的处理。使用托管bean的构造函数或PhaseListener上的RESTORE_VIEW监听。