我使用带有 webflow.mvc.servlet.FlowController 的 Spring webflow 2。
我想将表单数据提交 (POST) 直接绑定到流视图的模型。
在内部导航流程和提交表单数据时,数据会正确绑定到模型,但从外部网站提交数据时,数据不会自动绑定。
为了检查这一点,我在视图中使用了一个 spring:form 标记来通过它们的名称/路径绑定提交值。
Example:
- the views model is named "model"
- the class used for the model object is has an attribute called "value1"
-> the bind path for the form:input element is "model.value1"
-> the submitted form input field is named "model.value1" as well
更新
我现在可以使用以下方法手动访问请求参数:
<action-state>
<evaluate expression="myBinder.execute(flowRequestContext)"/>
</action-state>
其中 myBinder 是实现的自定义 Java 类org.springframework.webflow.execution.Action
flowRequestContext 是框架提供的 EL 变量。
通过requestContext.getExternalContext().getRequestParameterMap();
请求的参数被暴露。
现在要将这些参数绑定到我的模型bean,是否有一种方便的方法可以自动执行此操作,例如这里和那里提到的“bindAndValidate”方法。我不知道在哪个类中可以使用这种方法。
我希望有一些类可以对我的模型 bean 进行超类化,但我无法在任何地方找到它。
更新
我现在没有实现 Action 接口,而是将 FormAction 子类化为具有 bindAndValidate() 方法。但是,此方法需要将请求作为参数,我还不知道如何最好地在 EL 中检索对请求的引用。
此外,我还没有检查这是否真的会将请求参数绑定到我的模型并解决我的问题。
更新
我找到了一个示例,该示例显示了在不提供参数的情况下调用 bind 方法 - 所以我假设那些 (requestContext) 是由框架以某种方式找到的。
使用这种方法,模型名称和类被设置为 FormAction bean 上的一个属性。
流程似乎运行正常,但请求参数仍然未绑定......
也许我必须回到手动方法,从请求中读取每个参数并将其设置在模型对象上......
欢迎任何想法...