【发布时间】:2014-02-17 23:26:59
【问题描述】:
我知道存在许多不同的架构。在这个问题中,我考虑了 3 层架构(表示-服务(业务逻辑)-数据访问层 (DAO)。我想专注于表示层与服务层的工作方式。
我遇到的问题是标准的。我有无状态服务层,为了可扩展性和性能,我认为它应该是无状态的。
我也有状态表示层。例如,当用户填写某些表单并且输入的值未通过验证时,最好显示所有具有输入值的字段并指向不正确的字段。
所以,假设我们有 FooBean 和 setFoo (Foo f)、getFoo () 和 doSave () 方法。 Bean 具有会话范围。
我们要保存(持久)新的 Foo 实例。我们所做的是调用方法setFoo(),然后调用方法doSave()。如果保存失败,用户将看到刚刚填写的所有输入值的表单(调用 getFoo () 方法)。
很好,但现在假设用户单击Create Foo 链接,填写所有字段,尝试保存但未通过验证?他会再次看到填写好的表格。然后他再次单击“创建 Foo”(他想同时创建 2 个 Foo 对象)。他会看到带有明显错误的填充表格。但这很糟糕,因为他还没有填写这张(第二张,新的)表格。
如果我们将 FooBean 范围更改为 Request,那么我们将无法在必要时显示已填写的表单(保存失败后)。
那么,出路是什么?什么是正确的解决方案?它可以是特定于 JSF 的,也可以是通用的。
【问题讨论】:
-
至少给我一个理由不将您的评论标记为“噪音、冒犯性或垃圾邮件”。
-
因为他有一定的道理 ;) 虽然 48% 并不总是很糟糕,但它可能会让人们远离你的问题,例如认为你“忘恩负义”。
-
严格说来,还有一个“这个答案有用”的按钮,也显得有点闲。
-
@Bozho:嗯,我认为'正确答案票'在这里不是为了欣赏,而是为了那些以后会发现这个问题的人(来自谷歌或本地搜索)。当我想表明我很欣赏一个答案时,我通常会写相应的评论。我也可以投票给那个答案。但这就是我在这里所能做的。
-
虽然您说得有道理,但我怀疑您在 50% 的情况下都没有得到适当的答案。评论不是表达赞赏的方式。投票是,但你也没有太多的赞成票。
标签: java architecture jsf jakarta-ee