我正在研究一个小型的webtool练习和导航规则已引起我的注意.所以我看了几个网络教程,并亲自尝试过,这对我不起作用.它不会重定向到所需的页面.
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>
Run Code Online (Sandbox Code Playgroud)
返回值的类 <from-outcome>
public class verifyCredentials() {
public String save(Klasse klasse, Module modul) {
//do some other stuff
return "ok";
}
}
Run Code Online (Sandbox Code Playgroud)
按下此commandLink时,应该发生重定向
<p:commandLink actionListener="#{verifyCredentials.save(klasse, modul)}">#{modul.modulnummer} </p:commandLink>
Run Code Online (Sandbox Code Playgroud)
现在,这给我带来了几个问题:
/faces/的<from-view-id>?提前谢谢 - Reteras
有两个错误.
首先,你在这里混合隐式和显式导航.
<to-view-id>/teilnehmer.xhtml?faces-redirect=true</to-view-id>
Run Code Online (Sandbox Code Playgroud)
该faces-redirect=true查询字符串参数仅供隐式导航下面是使用:
public String save(Klasse klasse, Module modul) {
// ...
return "/teilnehmer.xhtml?faces-redirect=true";
}
Run Code Online (Sandbox Code Playgroud)
请注意,这不需要任何XML配置!隐式导航功能是JSF 2.0以来的新功能.也许你在学习JSF 2.x时正在阅读/关注JSF 1.x资源而不是JSF 2.x资源.注意学习资源中提到的日期和版本.
如果您确实需要通过XML中的显式导航配置此重定向,请<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>
Run Code Online (Sandbox Code Playgroud)
其次,你混合actionListener使用action.
<p:commandLink actionListener="#{verifyCredentials.save(klasse, modul)}">
Run Code Online (Sandbox Code Playgroud)
在actionListener不支持返回导航结果.请action改用.
<p:commandLink action="#{verifyCredentials.save(klasse, modul)}">
Run Code Online (Sandbox Code Playgroud)