JSF 流面 无法从结果'<FLOW_NAME>'的视图 ID 'CURRENT_PAGE'中找到匹配的导航案例



我已经创建了一个JSF Flow。我的定义如下:

<flow-definition id="registration">
    <initializer>#{registrationBean.initializeFlow}</initializer>
    <start-node>personalDetails</start-node>
    <view id="personalDetails">
        <vdl-document>/registration/personal-details.xhtml</vdl-document>
    </view>
    <navigation-rule>
        <from-view-id>*</from-view-id>
        <navigation-case>
            <from-outcome>registration</from-outcome>
            <to-view-id>/registration/personal-details.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/registration/personal-details.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>next</from-outcome>
            <to-view-id>/registration/cultural-details.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/registration/cultural-details.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>previous</from-outcome>
            <to-view-id>/registration/personal-details.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>next</from-outcome>
            <to-view-id>/registration/profile-details.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/registration/profile-details.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>previous</from-outcome>
            <to-view-id>/registration/cultural-details.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>next</from-outcome>
            <to-view-id>/registration/preview.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <navigation-rule>
        <from-view-id>/registration/preview.xhtml</from-view-id>
        <navigation-case>
            <from-outcome>previous</from-outcome>
            <to-view-id>/registration/profile-details.xhtml</to-view-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>success</from-outcome>
            <to-view-id>/registration-complete.xhtml</to-view-id>
        </navigation-case>
    </navigation-rule>
    <flow-return id="cancel">
        <from-outcome>cancel</from-outcome>
    </flow-return>
    <finalizer>#{registrationBean.finalizeFlow}</finalizer>
</flow-definition>

当我在Faces Flow中移动时,实际的流程页面中没有问题,但是模板输出了一个奇怪的错误:

Unable to find matching navigation case from view ID '/registration/personal-details.xhtml' for outcome 'registration' 

其中/registration/personal-details.xhtml为当前文件名,registration为当前Flow Scope的文件名。

菜单中的渲染链接也呈现为:

Sign Up

流外,或:

Sign Up: This link is disabled because a navigation case could not be matched.

流内部

同时,Glassfish日志给了我这个:

Warning:   JSF1064: Unable to find or serve resource, /registration/registration.xhtml.

这个registration.xhtml不存在,但我认为我可以通过改变配置中的<start-node>来覆盖默认文件名。

是否有一种方法,我可以保持我的文件结构与非默认值,并得到这个工作?到底是什么问题?

似乎第一个视图必须是registration.xhtml(或<FLOW_NAME>.xhtml一般),所以我可以摆脱错误信息,从技术上讲,这"回答"我的问题,但我更愿意能够命名我的视图,因为我认为合适,而不必默认,如果可能的话,所以我会坚持一段时间选择一个答案,以防有人有任何更好的输入在这个问题上。

你可以使用@Producer方法中的FlowBuilder而不是XML配置来重命名起始页(或在任何目录中使用任意faces页)。

见:https://blog.oio.de/2014/02/12/a-comprehensive-example-of-jsf-faces-flow/

这将需要从face-config.xml切换到基于代码的配置…基于Faces/directory的配置不是很灵活,需要遵守标准约定。

相关内容

  • 没有找到相关文章

最新更新