DCO
DCO

Reputation: 1292

JSF 2.2 navigation rule not firing

I am calling a backing bean method with a parameter from my jsf

<p:commandLink value="createUserFromSearch" action="#{userBacking.fromUserSearch(searchUserBacking.userSearchWithOptions)}"/>

SearchUserBacking

public UserSearch getUserSearchWithOptions(){ 
     //create and return UserSearch Object
}

UserBacking

public String fromUserSearch(UserSearch userSearch){
  fillViewLabelsFromUserSearch(userSearch);
  return "success";
}

Navigation Rule

<navigation-rule>
        <display-name>RouteView</display-name>
        <from-view-id>/*</from-view-id>
        <navigation-case>
            <from-action>#{userBacking.fromUserSearch}</from-action>
            <from-outcome>success</from-outcome>
            <to-view-id>/user/userView.xhtml</to-view-id>
            <redirect/>     
        </navigation-case>
</navigation-rule>

Outcome

Ressource /user/success.xhtml not found

All navigation rules where I call methods without parameters are working. Why not this one?

Upvotes: 4

Views: 2643

Answers (1)

DCO
DCO

Reputation: 1292

Because no one was able to answer me that question I solved it in two steps:

I am calling a setter method from the actionListener attribute and the navigation/logic method from action attribute like this:

<p:commandLink value="createUserFromSearch" action="#{userBacking.showFromUserSearch}" actionListener="#{userBacking.setUserSearch(searchUserBacking.userSearchWithOptions)}"/>

SearchUserBacking

public UserSearch getUserSearchWithOptions(){ 
     //create and return UserSearch Object
}

UserBacking

public String showFromUserSearch(){
   if(this.userSearch!=null){
      fillViewLabelsFromUserSearch(userSearch);
      return "success";
   }else{
      return "false";
   }
}

public void setUserSearch(UserSearch userSearch){
  this.userSearch=userSearch;
}

Navigation Rule

<navigation-rule>
        <display-name>RouteView</display-name>
        <from-view-id>/*</from-view-id>
        <navigation-case>
            <from-action>#{userBacking.showFromUserSearch}</from-action>
            <from-outcome>success</from-outcome>
            <to-view-id>/user/userView.xhtml</to-view-id>
            <redirect/>     
        </navigation-case>
</navigation-rule>

Outcome

Ressource /user/success.xhtml not found

All navigation rules where I call methods without parameters are working. Why not this one?

Upvotes: 2

Related Questions