6

我对 Spring MVC 很有经验,并且正在尝试 Stripes 来决定是否在新项目中尝试它。

在 Spring MVC 中,我将准备模型数据并将其传递给视图,方法是将其添加到我的控制器创建的 ModelAndView 实例中的地图中。我在为 Stripes 找到等效的东西时遇到了麻烦。

似乎最接近的并行是让 ActionBean 准备我的模型数据并将其添加到 HttpSession。ForwardRedirect 用于加载视图并从会话中访问数据。

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

谢谢!

4

3 回答 3

5

Stripes 中的典型 MVC 设计类似于下面的代码。

JPA 实体由Stripersist提供的 Stripes 拦截器自动加载(但如果您愿意,也可以轻松地自行实现)。因此,在本例中,请求http://your.app/show-order-12.html将从数据库中加载 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”);
    }
}

查看(order.jsp):

<html><body>
    Order id: ${actionBean.order.id}<br/>
    Order name: ${actionBean.order.name)<br/>
    Order total: ${actionBean.order.total)<br/>
</body></html>

模型(Order.java):

@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;
    }   
}

顺便说一句,有一本非常棒的关于 Stripes 的短(!)书,涵盖了所有这些内容:

Stripes:……Java Web 开发再次变得有趣

于 2010-10-14T23:53:22.460 回答
1

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

IE context.getRequest().setAttribute("attr1", "请求属性1"); return new ForwardResolution("/WEB-INF/pages/hello.jsp");

在 hello.jsp 中,${attr1} 可用......耶!

于 2010-10-14T18:03:14.853 回答
0

nopCommerce 3.20 (MVC) 有一个不错的解决方案。这是一个支持、授权、授权/捕获、退款和部分退款的支付插件。包括 PCI 合规性,没有 CC 信息存储在 db http://shop.wama-net.com/en/stripe-payment-plugin-for-nopcommerce

杰基

于 2014-02-04T17:21:03.433 回答