具有faces-redirect = true的导航规则未触发

时间:2015-07-13 09:32:07

标签: jsf navigation

我正在研究一个用于练习和导航规则的小工具,引起了我的注意。所以我查看了几个网络教程,并亲自尝试过,但它并不适合我。它不会重定向到所需的页面。

faces-config.xml(只有应该重要的部分)

    <navigation-rule>  
    <from-view-id>/kursleiter.xhtml</from-view-id>  
        <navigation-case>   
            <from-action>#{verifyCredentials.save}</from-action>
            <from-outcome>ok</from-outcome>   
            <to-view-id>/teilnehmer.xhtml?faces-redirect=true</to-view-id>  
        </navigation-case>  
</navigation-rule>

返回<from-outcome>

值的类
public class verifyCredentials() {
    public String save(Klasse klasse, Module modul) {
    //do some other stuff
    return "ok";
    }
}

按下此commandLink时,重定向应该发生

<p:commandLink actionListener="#{verifyCredentials.save(klasse, modul)}">#{modul.modulnummer} </p:commandLink>

现在,这给我带来了几个问题:

  1. 我是否需要在/faces/
  2. 中添加<from-view-id>
  3. 我只是简单地将链接返回到班级中所需的页面?
  4. 我是否犯了任何合乎逻辑的错误,我太盲目了?
  5. 提前谢谢你 - Reteras

1 个答案:

答案 0 :(得分:7)

有两个错误。

首先,你在这里将隐式与显式导航混合在一起。

.divider {
  position: relative;
}

.divider:after {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;

  width: 1px;

  background-color: #000;
}

<to-view-id>/teilnehmer.xhtml?faces-redirect=true</to-view-id> 查询字符串参数仅用于隐式导航,如下所示:

faces-redirect=true

请注意,这不需要任何XML配置!隐式导航功能是JSF 2.0以来的新功能。也许你在学习JSF 2.x时正在阅读/关注JSF 1.x资源而不是JSF 2.x资源。注意学习资源中提到的日期和版本。

如果您确实需要通过XML中的显式导航配置此重定向,请改用public String save(Klasse klasse, Module modul) { // ... return "/teilnehmer.xhtml?faces-redirect=true"; }

<redirect>

其次,您将<navigation-case> <from-action>#{verifyCredentials.save}</from-action> <from-outcome>ok</from-outcome> <to-view-id>/teilnehmer.xhtml</to-view-id> <redirect /> </navigation-case> actionListener混合在一起。

action

<p:commandLink actionListener="#{verifyCredentials.save(klasse, modul)}"> 不支持返回导航结果。请改用actionListener

action

另见: