作者johnny94 (32767)
看板java
标题[问题] 关於一个设计的问题
时间Mon Jun 19 23:15:57 2017
目前工作是使用 Spring boot + thymeleaf 在开发,最近遇到了一个设计上的问题,
做事做出来了,但是总觉得有更好的办法,因此上来请益一下。
需求大致上是一个可以让使用者写文章,後台有评审可以评论。
後台的使用流程是这样的:
1. 评审登入後台
2. 进入到评论文章的画面,列出一串文章的内容及作者,以及 textaera 让评审写评论
2.a 如果评审有写过评论的话,则 textarea 显示之前写的内容
3.写完後按下「确认钮」进入确认画面,画面跟「2」基本上一样一样,只是 textarea
换成其他的HTML元素显示评审输入的内容。
-----------------------------------------------------------------------------
以下说明我使用的方式以及遇到的疑惑点:
在 2 这个画面,我写了一个 class 长这样
class ArticleDto
long articleId // 文章ID
String article // 文章内容
String autohr // 作者
String comment // 评审的评论
下 SQL 後把取得的资料转换成 Map<Long, ArticleDto> ,并在画面中显示出来
其中 Long 放的是文章的 ID,这个 ID 其实就是跟 ArticleDto 里的 articleId
是一样的东西。
同样在 2 这个画面,有一个 form 的类别长这样,用来保存 POST 表单後的资料:
class CommentForm
long articleId // 文章ID
String comment // 评审的评论
为了能够在 3 这个确认画面同时显示显示出文章的内容以及评审的评论,
当使用者 POST 表单之後,我必须在 controller 里面用类似这种方式:
// 用 articleId 找出评审的评论是对应哪篇文章
// 找到後把评审输入的评论设为对该篇文章的评论
articleMap.get(form.articleId).setComment(form.comment)
把评审输入的评论,跟 Map 里面的内容组合起来,才有办法在 3 这个确认画面
同时显示文章相关资以及评审的评论。这也是为什麽我的 CommentForm
跟 Map 的 key 都是 articleId。
-----------------------------------------------------------------------
虽然是做出来了,但是总感觉有更好的方式可以做出这个功能,
不知道有没有相关的经验可以让我参考一下。
我已经尽量把最重要的资讯呈现出来,如果还有看不懂的部分,
欢迎提问我再补充,谢谢各位。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 153.150.177.210
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1497885361.A.C83.html
※ 编辑: johnny94 (153.150.177.210), 06/19/2017 23:16:38
1F:推 mozzan: 用Map意义在哪?你有用db吗 06/20 22:22
2F:→ ssccg: 你在2的输入、确认是单一笔文章? 所以form资料只有一个id? 06/20 22:53
3F:→ ssccg: 那为什麽3的画面还是需要列出所有文章? 06/20 22:54
4F:→ ssccg: 2、3画面都要全部文章的话,这设计没什麽问题 06/20 22:56
5F:→ ssccg: 但是2、3画面都全部文章,却没有要支援一次写多笔感觉很怪 06/20 22:57
6F:→ pttworld: 4.或3.结束才对article写入。确认之前可反悔多次。 06/21 20:15