gpt4 book ai didi

java - Spring Webflow,ID 和版本被剥离

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:24:20 25 4
gpt4 key购买 nike

我最近在使用 Spring Webflow 时遇到了一个奇怪的错误,我似乎找不到问题所在,而且似乎没有人遇到过这种情况。

当开始我的流程时,我从数据库加载一个对象,然后用户将在流程中修改该对象。加载对象时,每个属性都正确绑定(bind):在调试入口函数时,对象已设置所有属性。然而,在那之后,当 View 被渲染时,对象的“id”和“version”字段突然变为空,所以 <form:hidden path="id" /><form:hidden path="version" />不显示任何内容。

我不知道从哪里开始,我不想把无用的代码放在这里,所以如果你需要我的代码的一部分,尽管问。

附加信息:

我还尝试使用 <form:input path="id" /> 强制修改这些字段并尝试手动将一些值放入其中并提交表单,但没有成功。

重要更新似乎每个“复杂”对象都会出现这个问题,假设 MyForm 中有另一个类,称为 B。如果 B 只包含基本类型,例如 Integer 和 String,则可以使用它们的 id 和 version 正确地存储和检索它们字段,如果 B 中有其他类型的对象字段(C 类),则它们的 id 和版本消失。

感兴趣的流配置摘录。请注意,除 id 和 version 字段外,表单中的所有数据都可以正确查看。

流程:

<input name="idObj" />
<decision-state id="createOrEdit">
<if test="idObj== null" then="newObj" else="modObj" />
</decision-state>
...
<action-state id="modObj">
<evaluate expression="Search.findOne(idObj)" result="flowScope.form"/>
<transition to="object" />
</action-state>

<view-state id="object" view="flow.object" model="form">
<on-entry>
<evaluate expression="handler.prepare(flowScope.form)"/>
</on-entry>
<!-- transitions omitted -->
</view-state>

查看:

<form:form modelAttribute="form" cssClass="form form-horizontal">
<form:input path="id" />
<form:input path="version" />
<!-- other fields -->
<input type="hidden" name="_flowExecutionKey" value="${flowExecutionKey}"/>
</form:form>

处理程序:

public void prepare(MyForm form) {

int codType = form.getFormType().getId();
FormType type = service.findOne(codType);

form.setFormType(type); // This is here for JPA to save correctly the instance
RequestContext requestContext = RequestContextHolder.getRequestContext();
requestContext.getViewScope().put("typeList", typeService.findAll());
}

最佳答案

好吧,在我的头在 table 上重重敲了三天之后,我发现了以下内容:

为了让 Webflow 能够处理任何类型的自定义表单,它必须实现 Serializable 接口(interface),而我的表单对象实际上做到了。 但是它继承idversion字段的对象没有,所以所有对象相关的属性被正确存储,但没有被序列化的继承的。

所以,简而言之,为了让它工作,我只是将 implements Serializable 放在基础数据库对象类中:public class BaseDTO implements Serializable

关于java - Spring Webflow,ID 和版本被剥离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24143460/

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