将逻辑决策放在控制器或视图中

时间:2012-04-01 12:56:26

标签: java spring-mvc

在我的应用程序中,用户可以创建帖子,但只有帖子的创建者可以删除它。

所以当我列出每个帖子时,我必须做出决定。

那么在控制器或视图中哪个更适合这个逻辑决策?

现在我在视图中执行:

控制器:

class PostController{
  @RequestMapping("post/list")
  public void list(Model m){
   List<Post> posts=queryPosts();
   m.addAttribute(posts);
  }
}

post_list.ftl

<#list ${posts} as post>
  <span>${post.name}</span>
  <#if ${post.owner}==${session.user}>
    <a href="post/${post.id}/delete">Delete</a>
  </#if>
</#list>

然后我想知道这是否是最好的做法?

如果将控制器中的逻辑判断更好,那么如何制作呢?添加帖子的editable字段?

2 个答案:

答案 0 :(得分:2)

最终必须在控制器中做出决定。如果恶意用户尝试访问delete页面,会发生什么情况?

但是,视图中的优良做法是只允许用户查看他们有权访问的页面的链接。

Spring Security提供了多种方法来保护基于用户,角色或组的URL或例程。

答案 1 :(得分:0)

关于哪个项目可以在控制器中由哪个用户删除的最终决定和逻辑。具有讽刺意味的是,从我在你的代码中看到的,这实际上是发生了什么 - 你只是决定是否在你的用户界面中显示基于当前用户的删除链接 - 这在我看来很好。