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

Java 将逻辑决策放在控制器或视图中,java,spring-mvc,Java,Spring Mvc,在我的应用程序中,用户可以创建帖子,但是只有帖子的创建者可以删除帖子 因此,当我列出每个帖子时,我必须做出决定 那么,在控制器中还是在视图中,哪个更适合这个逻辑决策 现在我在视图中执行此操作: 控制器: class PostController{ @RequestMapping("post/list") public void list(Model m){ List<Post> posts=queryPosts(); m.addAttribute(posts);

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

因此,当我列出每个帖子时,我必须做出决定

那么,在控制器中还是在视图中,哪个更适合这个逻辑决策

现在我在视图中执行此操作:

控制器:

class PostController{
  @RequestMapping("post/list")
  public void list(Model m){
   List<Post> posts=queryPosts();
   m.addAttribute(posts);
  }
}
类后置控制器{
@请求映射(“发布/列表”)
公共作废清单(m型){
List posts=queryPosts();
m、 添加属性(员额);
}
}
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>

${post.name}
那么我想知道这是不是最好的做法


如果把逻辑检测器放在控制器中比较好,那么如何使它更好呢?添加帖子的
可编辑的
字段?

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

不过,在视图中,最好只让用户看到他们有权访问的页面的链接


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

关于哪个用户可以在控制器中删除哪个项目的最终决定和逻辑。讽刺的是,从我在你的代码中看到的情况来看,这实际上就是正在发生的事情——你只是在根据当前用户决定是否在你的UI中显示删除链接——我认为这很好。

最终决定。。。在控制器中,
,然后你说,
决定是否在你的UI中显示删除链接……在我看来很好。
我不确定你的意思。@hguser-你当前的代码很好,它实际上在UI端没有删除逻辑。它具有用于确定何时显示删除链接的表示逻辑。imo没有什么问题。事实上,即使我在控制器中做决定,当从客户端发送url“post/1/delete”时,我也会检查angin是否用户有权限\