Spring MVC - 动态Web表单 - 表单生成器 - 设计问题

时间:2015-09-29 19:19:04

标签: java spring forms hibernate formbuilder

我需要建议db以及架构方面。

我正在开发一个应用程序,它在某些区域使用表单构建器方法。例如。用户注册,除用户的一些基本字段外,管理员可以配置额外的字段:

Form Builder Example

我在数据库中有几个表,它们将存储这些新创建的字段的元数据:

FIELDS_TXN
______________
F_ID
F_NAME
F_ORDER
F_TYPE_ID

FIELD_TYPE_MST
______________
F_TYPE_ID
F_TYPE

FIELD_OPTIONS_TXN
______________
F_OPTION_ID
F_OPTION_VALUE
F_FIELD_ID

(这是一个非常粗略的数据库设计)

现在我知道我需要在表单中显示哪些新字段,但是如何存储这些额外数据?

例如,用户的默认字段是名字,姓氏和电子邮件

User.java

@Entity
@Table(name="user_txn")
public class User{

    @Id
    @GeneratedValue
    @Column(name="id")
    private int id;

    @column(name="first_name")
    private String firstName;

    @column(name="last_name")
    private String lastName;

    @column(name="email")
    private String email;

    public int getId(){
        return this.id;
    }

    public void setId(int id){
        this.id = id;
    }

    public String getFirstName(){
        return this.firstName;
    }

    public void setFirstName(String firstName){
        this.firstName = firstName;
    }

    public String getLastName(){
        return this.lastName;
    }

    public void setLastName(String lastName){
        this.lastName = lastName;
    }

    public String getEmail(){
        return this.email;
    }

    public void setEmail(String email){
        this.email = email;
    }
}

现在,如果管理员为用户添加或配置更多字段,如出生日期,地址,城市,国家,Pincode,我该如何存储这些字段的值?

我想到的一种方法是创建一个表格,例如user_custom_fields?但是如何为动态创建的表自定义字段动态hibernate映射?

这是在Web应用程序中构建动态表单的好方法吗?

1 个答案:

答案 0 :(得分:0)

您可以采用将所有字段保存为"字段"在你的数据库中。假设您有一个表"字段",管理员添加的字段,将在此表中添加一个条目。类似地创建表单,整个应用程序方法可以是这样一种方式,即在应用程序启动时创建所有字段。可能会帮助!!