Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在动态表单上完成CRUD操作?_Java_Jsf_Jpa - Fatal编程技术网

Java 如何在动态表单上完成CRUD操作?

Java 如何在动态表单上完成CRUD操作?,java,jsf,jpa,Java,Jsf,Jpa,我遵循了从数据库中定义的字段创建动态表单的步骤。 我可以获取已发布字段的字段名和值。 但我对如何将值保存到数据库中感到困惑 我是否应该在创建表单和 是否手动保存值(通过手动形成SQL查询) 我应该将名称/值对转换为JSON对象吗 还有储蓄 我应该创建一个带有id、名称、值字段和 是否在此处保存名称/值对(如EAV方案) 或者是否有任何方法可以将发布的值持久化到数据库中? 关于看起来你是在试图自下而上而不是自上而下地工作 链接答案中的动态表单旨在在所有现有表之间重用,而无需在每个表的“硬编码”

我遵循了从数据库中定义的字段创建动态表单的步骤。 我可以获取已发布字段的字段名和值。 但我对如何将值保存到数据库中感到困惑

  • 我是否应该在创建表单和 是否手动保存值(通过手动形成SQL查询)
  • 我应该将名称/值对转换为JSON对象吗 还有储蓄
  • 我应该创建一个带有id、名称、值字段和 是否在此处保存名称/值对(如EAV方案)
或者是否有任何方法可以将发布的值持久化到数据库中?
关于

看起来你是在试图自下而上而不是自上而下地工作

链接答案中的动态表单旨在在所有现有表之间重用,而无需在每个表的“硬编码”Facelets文件上手动创建单独的JSF CRUD表单。您应该已经有了一个通用模型,其中包含特定DB表中所有可用列的信息(链接答案中的
字段
)。这些信息可以通过JPA元数据信息(如何提取取决于所使用的JPA提供程序)或者在应用程序启动期间通过good’ol JDBC类动态地、一般地提取

如果你真的需要自下而上的工作,那么它会变得更加棘手。在运行时创建表/列是一个非常糟糕的设计(当然,除非您打算开发某种数据库管理工具,如PhpMyAdmin等)。不需要在运行时创建表/列,您基本上应该有3个表:

  • 1个表,其中包含关于哪些“虚拟”数据库表都可用的信息
  • 1个表,其中包含一个“虚拟”DB表具有哪些列的信息
  • 一个表,其中包含一个此类列具有的值的信息

然后你应该通过FK关系将它们联系在一起。

我已经阅读了Balusc的优秀教程,所有这些教程。我找不到那个教程和我的问题有什么关系。本教程是关于经典DAO的。我错过什么了吗?