我有一个使用 Spring Web Flow 进行导航的 JSF 应用程序。每次用户从另一个视图导航到帐户视图时,都应该执行一段代码。对于帐户视图,我有一个名为 accountsBean 的托管 bean。我想在流入口处从 bean 调用一个 initView 方法。它会抛出一个 PropertyNotFoundException,因为 Spring 无法识别 accountBean。
WEB-INF/flows/accounts-flow/flow.xml
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<view-state id="accounts" view="accounts.xhtml">
<on-entry>
<evaluate expression="accountsBean.initView()"></evaluate>
</on-entry>
</view-state>
</flow>
EDIT1:
我的应用程序的一部分管理帐户和组。用户使用菜单在应用程序的不同部分之间导航。Spring Web Flow 用于将导航从菜单项链接到某个视图。帐户视图包含一个数据表、一些用于 CRUD 操作的按钮和一个用于选择帐户类型的选择框。根据其类型显示不同的帐户。数据表列是动态的。用户可以激活或停用某种类型。现在用户必须注销才能看到帐户类型的修改。我需要让它工作而不需要注销。
EDIT2:我已将流定义更改为:
<flow xmlns="http://www.springframework.org/schema/webflow"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/webflow http://www.springframework.org/schema/webflow/spring-webflow-2.0.xsd">
<var name="accountsFlow" class="com.acme.accounts.AccountsFlow" />
<view-state id="accounts" view="accounts.xhtml">
<on-entry>
<evaluate expression="accountsFlow.initView()"></evaluate>
</on-entry>
</view-state>
</flow>
AccountsFlow 用 注释org.springframework.stereotype.Component
。在 initView 方法accountsBean
中执行了一些代码。这适用于SessionScoped
bean,但 BalusC 提出的解决方案更好。