我必须在我的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");
我该怎么做呢?
答案 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
监听。