私は自分のフローの1つでこれをやろうとしています:
<!-- Initial inputs -->
<input name="profileId" required="true" type="long" />
<input name="profile" required="true" type="com.myapp.model.Profile" />
冗長です、私は知っています。デバッグ目的のためだけです
ここでの問題は、プロファイルが null (com.myapp.model.Profile) であり、必要な属性エラーが原因でフロー ハンドラーに例外がスローされることです。ただし、profileId (long) は null ではなく、正常に動作します。
私の質問:
型がただのロング型じゃなかった可能性はありますか?(ここに別の関連トピックがあります)
これが私のコントローラーです:
@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";
}
編集:
私はそれを解決しました。オブジェクト Profile (「プロファイル」という名前) の Spring MVC コントローラーで @SessionAttributes を使用していたので、フローでは、ExternalContext API を使用してそのオブジェクトを取得しました。
したがって、コントローラーは同じコードを保持しますが、私のフローでは、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)
.....
}