jsfjsf-2websphere-7icefaces-3

Navigation Case extension


I am trying to navigate to an xhtml page in a static web project. My original context is a dynamic web project with icefaces 3.3. It redirects to the below path with .faces even when I specify .xhtml as outcome in the to-view-id. Is there any way to make it redirect to .xhtml instead?

http://localhost:9080/staticWebRoot/logout.faces

faces-navigation.xml

<navigation-rule>
    <from-view-id>*</from-view-id>
    <navigation-case>
    <from-outcome>logout</from-outcome>
    <to-view-id>/../../staticWebRoot/logout.xhtml</to-view-id>
    <redirect/>     
    </navigation-case>
</navigation-rule>

Solution

  • You can and should not use navigation rules for non-JSF resources. JSF assumes that all to-view-ids are real JSF views in the current webapp (otherwise, they wouldn't be called "view IDs" in first place).

    Just use ExternalContext#redirect().

    public void redirect() throws IOException {
        // ... 
        FacesContext.getCurrentInstance().getExternalContext().redirect("/staticWebRoot/logout.xhtml");
    }