Spring Web Flow模型绑定到不同的请求参数

时间:2018-02-08 20:24:24

标签: java spring-webflow

TL; DR - Spring Web Flow中的模型绑定是否有办法将HTTP请求参数映射到模型属性?

问题:

My Spring Web Flow应用程序通过第三方产品访问。我们的客户连接到外部产品,做一些事情,然后第三方产品的请求被发送到我们的网络流程。然后我们发回回复,告诉外部平台下一步该做什么。

因此,我可以控制正在发送的HTTP请求参数,但我仍然在尝试利用Spring Web Flow绑定。

模型对象

public class MyModel {
    private String _value;
    public void setValue(String value);
    public String getValue();
}

Flow Snippet

<?xml version="1.0" encoding="utf-8"?>
<flow>
    <on-entry>
        <evaluate expression="new MyModel()" result="flowScope.myModel" />
    </on-entry>
    <view-state id="myForm" model="myModel">
        <binder>
            <binding property="value" converter="my_converter" required="true" />
        </binder>
        <transition on="submit" to="confirm" />
    </view>
</flow>

但是,当传入实际的HTTP请求以进行提交时,请求参数如下所示:

http://web-foo/my-flow?execution=e1s1&_eventId_submit=Submit&Content=ClientValue

有没有办法,除了使用自定义操作等告诉绑定器我希望它获取HTTP请求参数内容的值并将其设置在属性。未来的请求将重用相同的HTTP参数,因此我不能只更新我的模型,因为该值将被覆盖

1 个答案:

答案 0 :(得分:1)

在您的流程中创建输入:

<input name="Content" type="string"/>

将自动填充请求参数。

然后只需将其设置在您的模型上:

<on-entry>
    <evaluate expression="new MyModel()" result="flowScope.myModel" />
    <set name="myModel.value" value="Content"/>
</on-entry>

...