gpt4 book ai didi

java - 当我需要在命令类之外的表单上显示数据时,如何使用 SimpleFormController?

转载 作者:行者123 更新时间:2023-12-01 15:33:18 26 4
gpt4 key购买 nike

我在 Java 中使用 hibernate、Spring 和 Velocity。

我正在扩展 SimpleFormController 并为命令类使用典型的“用户”对象。我希望使用表单更新或创建 User 类,并将其反射回 hibernate,以便可以在数据库中更新值。

我的问题是,我希望在解析为“userEdit”的速度模板中显示附加数据,但我不想将此数据存储在用户对象中。

我的用户对象简化为:

public class User implements Serializable {

private String username;
private String password;

private Set<Object> allowedNames;

...
}

我的bean定义如下:

<bean id="userEditController" class="com.UserEditController">
<property name="sessionForm"><value>true</value></property>
<property name="commandClass"><value>com.data.User</value></property>
<property name="validator"><ref bean="userValidator"/></property>
<property name="formView"><value>userEdit</value></property>
<property name="successView"><value>UserEdit</value></property>
<property name="dao">
<ref bean="myDAO"/>
</property>
</bean>

“allowedNames”变量包含数据库中的一些名称列表,并且特定于用户。我想知道如何显示完整的名称列表(从数据库中提取),以便我可以在我的 userEdit Velocity 模板中使用它。因为我想在“allNames”旁边显示“allowedNames”。

使用 SimpleFormController 允许我直接控制 User 对象,创建新的 Users 或在数据库中更新它们,但是,向表单中添加更多信息对我来说非常困难,因为我被 User 对象困住了。

'allNames' 不属于 User 类,因此我尝试创建一个对象来保存 User 对象和一个名为 allNames 的 Set。我将其称为我的 UserEdit 类。我的问题是,我无法在速度模板(例如 $command.user.username )中引用没有访问器的 User 对象变量,而且我也无法绑定(bind)它们以防止错误或使用 User 对象将更改反射(reflect)并形成更改回数据库。

我的问题是关于如何在我的表单中使用这个“UserEdit”对象,或者使用不同的方法,以便我的表单可以拥有用户数据和其他数据,同时能够更新 User 对象(反射(reflect)在 hibernate 中)。有人有解决这个问题的方法吗?

最佳答案

我自己发现的是,继承的代码确实不会通过 Spring 中的某种反射自动更新 commandClass User 对象。

我为解决问题所做的就是创建一个 UserEdit 对象。它保存了来自表单的所有必要数据,然后我将这些数据放入 User 对象中,然后使用我的 DAO 保存它。

关于java - 当我需要在命令类之外的表单上显示数据时,如何使用 SimpleFormController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9287915/

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