gpt4 book ai didi

java - Spring Webflow : How to pass a bean from a controller to a flow?(使用输入映射)

转载 作者:行者123 更新时间:2023-11-29 08:57:08 24 4
gpt4 key购买 nike

我正尝试在我的一个流程中执行此操作:

<!-- Initial inputs -->
<input name="profileId" required="true" type="long" />
<input name="profile" required="true" type="com.myapp.model.Profile" />

冗余,我知道。这只是为了调试目的

这里的问题是配置文件为空 (com.myapp.model.Profile),由于所需的属性错误而向我的流处理程序抛出异常。但是,profileId(长)不为空并且工作正常。

我的问题:

有没有可能类型不能只是一个 long 类型? (Here 是另一个相关主题)

这是我的 Controller :

@RequestMapping(value = "/mappingUrl", method = {RequestMethod.POST})
public String go2Flow(.... some parameters ...,
@ModelAttribute("profile") Profile profile,
ModelMap model) {

model.put("profile", profile);
model.put("profileId", profile.getId());

return "redirect:/app/myFlow";
}

编辑:

我解决了。由于我在我的 Spring MVC Controller 上使用 @SessionAttributes 来获取对象配置文件(名为“配置文件”),因此在我的流程中我只使用了 ExternalContext API 来检索该对象。

因此, Controller 保留了相同的代码,但在我的流程中,可以像这样使用 ExternalContext API:

<on-start>
<evaluate expression="someService.serviceMethod(externalContext)" result="flowScope.outputVariable" />
</on-start>

然后在服务方法上:

@Override
public SomeObject serviceMethod(ExternalContext externalContext) {

Profile profile = (Profile) externalContext.getSessionMap().get("profile");

.....
(method logic)
.....
}

最佳答案

这里是你可以做的:

只保留profileId,不做必填

然后开始你的流程

<decision-state id="isProfileIdSet">
<if test="profileId != null" then="setProfile" else="errorState" />
</decision-state>

<action-state id="setProfile">/*get Profile with id and store it in flowScope */</action-state>

<end-state id="errorState"></end-state>

并添加 <on-start>状态或<on-entry>在你的第一个状态中

关于java - Spring Webflow : How to pass a bean from a controller to a flow?(使用输入映射),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19660925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com