在jsf-2.2中的faces-config中传递redirect-param

2023-12-27

在旧的 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=0page1 将被打开,同时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(使用前将#替换为@)

在jsf-2.2中的faces-config中传递redirect-param 的相关文章

随机推荐