1

我定义了一个流程:

<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中。在我看来,这个顺序是不正确的。

是否可以更改此订单,或者是否有干净的方法?

此时我没有在初始化方法中做任何事情。所有初始化都已临时移至其他方法,并从面板组上设置渲染器的视图文件中调用。这一切都有效,但这个解决方案远非正确。

4

1 回答 1

0

这种行为实际上已被接受为 Mojarra 中的错误:

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

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

于 2015-03-11T18:26:56.133 回答