在旧的 jsf 中,以下代码可以正常工作
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>true</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect>
<view-param>
<name>id</name>
<value>#{myBean.id}</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
page1.xhtml代码:
<f:metadata>
<f:viewParam id="id" name="id" value="#{myBean.id}" />
<f:viewAction action="#{myBean.init()}"/>
</f:metadata>
Java代码:
public class MyBean(){
private double id;
public boolean init(){
if(id > 0)
return true;
else
return false;
}
}
在成功场景中,当page1.xhtml?id=0
page1 将被打开,同时page1.xhtml?id=1
导航至page2
带参数id=1
.
导航至page2.xhtml?id=1
需要 with 参数,因为在page2
on PostConstruct
or <f:viewAction>
读取参数,需要根据这个id查找对象
在 faces-config.xml 文件中使用 jsf 2.2 和 mojarra javax.faces-2.2.8 实现,没有<view-param>
有<redirect-param>
更改它们不会带来成功的场景,其中导航没有 id 将导航到的位置page2.xhtml
代替page2.xhtml?id=1
你可以用老方法来做。而不是使用<redirect-param>
use <view-param>
。 xsd (http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd)会将其标记为 false,但 mojarra javax.faces-2.2.8 会按照您想要的正确方式默默地使用它。
编辑:XSD 将在 Mojarra 2.3 版本中修复,请参阅其他“答案”
Example:
<?xml version="1.0" encoding="UTF-8"?>
<faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" version="2.2">
<navigation-rule>
<navigation-case>
...
<redirect>
<view-param>
<name>foo</name>
<value>bar</value>
</view-param>
</redirect>
</navigation-case>
</navigation-rule>
</faces-config>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)