JSF 2.2 navigation rule does not work

I am calling a bean support 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>

Result

Ressource / user / success.xhtml not found

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

+4
source share
1 answer

Since no one could answer this question, I solved it in two stages:

I call the setter method from the actionListener attribute and the navigation / boolean method from the action attribute as follows:

<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>

Result

Ressource / user / success.xhtml not found

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

+2
source

Source: https://habr.com/ru/post/1532622/


All Articles