Spring mvc springmvc中的访问流模型

Spring mvc springmvc中的访问流模型,spring-mvc,Spring Mvc,我正在从asp.NETMVC学习SpringMVC4comming,我正在寻找一种方法,将数据传递到视图,而不必在每次调用中声明模型属性 例如,现在我有了这个 public class BaseController { public void AddMessage(Model model, String m) { Model.addAttribute("msg", m); } } public class PersonController extends Bas

我正在从asp.NETMVC学习SpringMVC4comming,我正在寻找一种方法,将数据传递到视图,而不必在每次调用中声明模型属性

例如,现在我有了这个

public class BaseController {
    public void AddMessage(Model model, String m) {
        Model.addAttribute("msg", m);
    }
}

public class PersonController extends BaseController{
        @RequestMapping("details/{Id}")
        public String details(@PathVariable int Id, Model model) {
             Person p = service.LoadById(Id);

             if(p == null) {
                AddMessage(model, "Record not found...");
             } else {
                model.addAttribute("bean", q);
             }

             return "person/details";
         }
}
但我真正想要的是有一种方法可以在我的基本控制器方法中访问该模型实例,而不必将其作为参数传递。类似于asp.net MVC中ViewData或TempData的用法

是否可以以这种方式将数据传递到视图


谢谢

如果要避免将模型作为方法参数传递,可以在方法中使用ModelAttribute注释:

只需注释该方法,Spring就会自动将该方法返回的内容添加到模型中

@ModelAttribute
public Stuff addStuffToModel() {
      Stuff stuff = new Stuff("dummy data");
      return stuff; // stuff is added to the model
}

我使用请求拦截器设法解决了这个问题。基本上:

在我的基本控制器类上:

public abstract class BaseController {

    protected List<UserViewMessage> viewMessages;

    public List<UserViewMessage> getViewMessages() {
        if (viewMessages == null) {
            viewMessages = new ArrayList<UserViewMessage>();
        }

        return viewMessages;
    }

    public void addMessage(String message, UserViewMessageType type) {
        getViewMessages().add(new UserViewMessage(message, type));
    }

    public void clearMessages() {
        if (viewMessages != null) {
            viewMessages.clear();
        }
    }
}
在预处理时,将清除基本控制器集合上的所有消息。在请求(PostHandle)之后,由于模型可用,我将消息集合复制到模型中,从而使其在我的视图中可用,如下所示:

<div class="row">
    <div class="col-lg-12">
        <c:forEach var="messageItem" items="${_ModelMessageList_}">
            <div class="alert alert-info"><c:out value="${messageItem.message}" /></div>
        </c:forEach>
    </div>
</div>


这不是最优的,但很有效。

还有其他方法吗?正如您想象的那样,向模型添加错误消息(例如)意味着需要从模型中检索列表,然后向其中添加内容。所以我真的需要访问模型instance@TiagoMatias你是在用AOP或类似的方式思考吗?你想用这个模型做什么?
<div class="row">
    <div class="col-lg-12">
        <c:forEach var="messageItem" items="${_ModelMessageList_}">
            <div class="alert alert-info"><c:out value="${messageItem.message}" /></div>
        </c:forEach>
    </div>
</div>