初始化方法后,在Faces Flow中加载inboundParameters

时间:2014-09-16 10:38:08

标签: jsf-2 flow-scope faces-flow

我定义了一个流程:

<flow-definition id="locking">
    <view id="locking">
        <vdl-document>/views/locking/locking.xhtml</vdl-document>
    </view>
    <view id="summary">
        <vdl-document>/views/locking/locking-summary.xhtml</vdl-document>
    </view>
    <inbound-parameter>
        <name>targetId</name>
        <value>#{lockingBean.targetId}</value>
    </inbound-parameter>
    <flow-return id="exit">
        <from-outcome>#{lockingBean.getExitNode()}</from-outcome>
    </flow-return>
    <initializer>#{lockingBean.initializeBean()}</initializer>
    <finalizer>#{lockingBean.finalizeBean()}</finalizer>

</flow-definition>

正如您所看到的,我有入站参数,需要在<initialize>标记中传递的方法中进行正确的初始化。问题是在初始化方法lockingBean.initializeBean()期间访问其值。在执行期间,参数targetId为空。它正确传递,因为在视图中我将其值作为文本。 这意味着,执行<initialize>中传递的方法,然后将入站参数传递给bean。在我看来,这个顺序是不正确的。

是否有可能破坏此订单,或者是否有干净利落的方式?

此时我在初始化方法中没有做任何事情。所有初始化都已临时移动到其他方法,并从面板组上的视图文件ti set renderer调用。一切正常,但这种解决方案远非正确。

1 个答案:

答案 0 :(得分:0)

此行为实际上已被Mojarra视为错误:

https://java.net/jira/browse/JAVASERVERFACES-3475

我可以确认MyFaces 2.2.7会出现同样的问题。