Java MVC模型数据

Java MVC模型数据,java,stripes,Java,Stripes,我对SpringMVC很有经验,我正在试用Stripes来决定是否在新项目中试用它 在SpringMVC中,我将准备模型数据并通过将其添加到控制器创建的ModelAndView实例中的映射将其传递给视图。我很难找到条纹的等效物 看起来最相似的做法是让ActionBean准备我的模型数据并将其添加到HttpSession。ForwardRedirect用于加载视图,并从会话访问数据 Stripes提供的前端控制器是否有更好的支持,或者这是一种与SpringMVC完全不同的设计原则?(例如,我必须使

我对SpringMVC很有经验,我正在试用Stripes来决定是否在新项目中试用它

在SpringMVC中,我将准备模型数据并通过将其添加到控制器创建的ModelAndView实例中的映射将其传递给视图。我很难找到条纹的等效物

看起来最相似的做法是让ActionBean准备我的模型数据并将其添加到HttpSession。ForwardRedirect用于加载视图,并从会话访问数据

Stripes提供的前端控制器是否有更好的支持,或者这是一种与SpringMVC完全不同的设计原则?(例如,我必须使用EL从视图中调用方法来检索数据,就像一些示例所做的那样)


谢谢

好吧,我已经弄明白了。添加到HttpServletRequest(从上下文检索)的属性在接收ForwardRedirect的页面中可用

即 context.getRequest().setAttribute(“attr1”,“请求属性1”); 返回新的ForwardResolution(“/WEB-INF/pages/hello.jsp”)

在hello.jsp中 ${attr1}
是可用的。。。耶

一个典型的条纹MVC设计看起来像下面的代码

JPA实体由提供的Stripes拦截器自动加载(但如果您愿意,也可以轻松实现)。因此,在本例中,请求将从数据库加载id为12的订单,并在页面上显示该订单

控制器(OrderAction.java):

@UrlBinding("/show-order-{order=}.html")
public class OrderAction implements ActionBean {
    private ActionBeanContext context;
    private Order order;

    public ActionBeanContext getContext() {
        return context;
    }

    public void setContext(ActionBeanContext context) {
        this.context = context;
    }

    public void setOrder(Order order) {
        this.order = order;
    }

    public String getOrder() {
        return order;
    }

    @DefaultHandler
    public Resolution view() {
        return new ForwardResolution(“/WEB-INF/jsp/order.jsp”);
    }
}
<html><body>
    Order id: ${actionBean.order.id}<br/>
    Order name: ${actionBean.order.name)<br/>
    Order total: ${actionBean.order.total)<br/>
</body></html>
@Entity
public class Order implements Serializable {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;
    private Integer total;

    public String getName() {
        return name;
    }

    public Integer getTotal() {
        return total;
    }   
}
查看(order.jsp):

@UrlBinding("/show-order-{order=}.html")
public class OrderAction implements ActionBean {
    private ActionBeanContext context;
    private Order order;

    public ActionBeanContext getContext() {
        return context;
    }

    public void setContext(ActionBeanContext context) {
        this.context = context;
    }

    public void setOrder(Order order) {
        this.order = order;
    }

    public String getOrder() {
        return order;
    }

    @DefaultHandler
    public Resolution view() {
        return new ForwardResolution(“/WEB-INF/jsp/order.jsp”);
    }
}
<html><body>
    Order id: ${actionBean.order.id}<br/>
    Order name: ${actionBean.order.name)<br/>
    Order total: ${actionBean.order.total)<br/>
</body></html>
@Entity
public class Order implements Serializable {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String name;
    private Integer total;

    public String getName() {
        return name;
    }

    public Integer getTotal() {
        return total;
    }   
}
顺便说一句,有一本关于条纹的非常优秀的短篇(!)书,涵盖了所有这些内容:


nopCommerce 3.20(MVC)只有一个不错的解决方案。这是一个支持、授权、授权/捕获、退款和部分退款的支付插件。包括PCI合规性,数据库中不存储CC信息


Jacky

我不喜欢将模型数据添加到HttpSession的方法,因为对于大多数页面请求,模型数据实际上应该存储在请求范围内,而不是会话范围内。这是我所能找到的对stripes最接近的等效支持。ActionBean既是控制器(Action),也是父模型数据(Bean)。)伟大的谢谢你的解释和完美的例子。:)