我正在使用JSF 2.0和MySQL创建新网站。以下是我所拥有的。
注意在每个表中,我只考虑1-2个字段,仅用于解释目的。实际上,根据要求,我会有很多字段。
我有很多申请人。
ApplicantDataTable
+++++++++++++++++++
appId PK
appName
+++++++++++++++++++
每个申请人都会有很多项目。
ProjectDataTable
+++++++++++++++++++
proId PK
proName
appId FK
+++++++++++++++++++
每个项目都有很多阶段,每个阶段我都需要输入数据。
stage1datatable
+++++++++++++++++++
stg001id PK
proId FK
stg001name
+++++++++++++++++++
stage2datatable
+++++++++++++++++++
stg002id PK
proId FK
stg002name
+++++++++++++++++++
在申请人的屏幕上,我会有申请人名单。一旦我点击这个,我将获得该申请人的项目清单。一旦我点击它,我将有第一阶段的屏幕,在第一阶段的屏幕,在底部,我将有阶段2,3,4等的链接。
我看到我将不得不采取ProjectId&适用于所有阶段,所以我不确定我是否会保留在会话范围内具有projectId和appId的bean?有人可以建议我如何在Java中构造bean?
任何建议都会很棒。
答案 0 :(得分:1)
理想情况下,会话范围适用于您的用例I.e.将两个ID存储在会话范围内,但实际上,它可能有点过分。如果两个ID都将被处理(因此可以在范围内重新存储),您可以将它们保存在flash scope中。在每个目标页面上,您可以访问这些ID,如果您在下一个请求中需要它们,只需将它们重新存储在同一范围内即可。这样就不会有浪费。在请求完成后,使用putNow()
方法保证变量可用。
与您的问题无关,我不禁注意到您的数据模型中的一些问题
为什么要在两个表中复制appName
变量?看起来像一些不必要的非规范化
为每个项目阶段创建一个表将在不久的将来带来问题。除非您完全确定您的项目阶段永远不会超过2或3,否则我强烈建议您将所有项目阶段合并到一个表中,然后将project_stage_id
添加为该表中的字段。使用唯一键约束和触发器的组合来确保不会发生重复,并且项目阶段ID是每个项目的顺序(如果这是一个要求)