【问题标题】:JSF 2.2 navigation rule not firingJSF 2.2 导航规则未触发
【发布时间】:2014-04-26 23:09:41
【问题描述】:

我正在使用我的 jsf 中的参数调用支持 bean 方法

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

搜索用户支持

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

用户支持

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

导航规则

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

结果

找不到资源/user/success.xhtml

我调用不带参数的方法的所有导航规则都有效。 为什么不是这个?

【问题讨论】:

  • 您是否尝试删除 ?如果您正在设置 ,我认为这不是必需的
  • 我认为如果我删除 每个返回的“成功”都会重定向到同一页面。
  • 因为没有人能回答我这个问题,我通过使用 actionListener AND action 解决了这个问题。在 ActionListener 属性中,我使用 BackingBean 中的参数调用 setter 方法,在 action 属性中,我调用执行逻辑的方法。
  • 您可以设置 以使导航特定于该页面;或者您可以使用比“成功”更具体的结果值来避免您提到的问题
  • 是的,我知道...我已经在我的示例中设置了它(/* = 从任何视图)

标签: jsf jsf-2 primefaces


【解决方案1】:

因为没有人能够回答我这个问题,所以我分两步解决了这个问题:

我从 actionListener 属性调用 setter 方法,从 action 属性调用导航/逻辑方法,如下所示:

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

搜索用户支持

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

用户支持

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

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

导航规则

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

结果

找不到资源/user/success.xhtml

我调用不带参数的方法的所有导航规则都有效。 为什么不是这个?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2011-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多