2010-10-14 2 views
6

У меня есть опыт работы с Spring MVC и я пытаюсь выполнить Stripes, чтобы решить, попробовать ли это для нового проекта.Stripes MVC Данные модели

Spring Spring MVC Я бы подготовил данные модели и передал ее в виде, добавив ее в карту в экземпляре ModelAndView, созданном моим контроллером. Мне трудно найти эквивалент этого для Stripes.

Кажется, что ближайшая параллель состоит в том, чтобы ActionBean подготовил мои данные модели и добавил ее в HttpSession. ForwardRedirect используется для загрузки представления и доступа к данным из сеанса.

Есть ли улучшенная поддержка переднего контроллера, предоставляемого Stripes, или это совершенно другой дизайн, чем Spring MVC? (т. е. я должен вызывать методы из представления, используя EL для извлечения данных, как это делается в некоторых примерах)

Спасибо!

+0

Мне не нравится метод добавления данных модели в HttpSession, как это на самом деле следует хранить запрос INT объем для большинства запросов страниц , а не области сеанса.Это всего лишь ближайшая эквивалентная поддержка, которую я смог найти для полос. – idle

+0

ActionBean - это как контроллер (Action), так и данные родительской модели (Bean). ;) – yihtserns

ответ

5

Типичный дизайн MVC в Stripes будет выглядеть примерно как код ниже.

Объект JPA автоматически загружается перехватчиком Stripes, предоставляемым Stripersist (но это также может быть легко реализовано on your own, если хотите). Таким образом, в этом примере запрос http://your.app/show-order-12.html загрузит заказ с идентификатором 12 из базы данных и отобразит его на странице.

Controller (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”); 
    } 
} 

View (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; 
    } 
} 

BTW есть действительно отличная короткая книга на Stripes, которая охватывает все эти вещи (!):

Stripes: ...and Java Web Development Is Fun Again

+0

Отлично! Спасибо за объяснение и прекрасный пример. :) – idle

1

Хорошо, я понял это. Атрибуты, добавленные к HttpServletRequest (извлеченное из контекста) доступны на странице получающего ForwardRedirect

И.Е. context.getRequest() SetAttribute ("attr1", "запрос атрибут 1"). вернуть новую ForwardResolution ("/ WEB-INF/pages/hello.jsp");

В hello.jsp $ {attr1} доступно ... yay!

+1

Это не так, как вы типично делали бы MVC в Stripes ... – Kdeveloper

0

Существует на одном хорошее решение для nopCommerce 3,20 (MVC). Это плагин, поддерживающий, авторизующий, авторизующий/захватывающий, возмещение и частичное возмещение. Соответствие PCI включено, нет информации CC не хранится на дб http://shop.wama-net.com/en/stripe-payment-plugin-for-nopcommerce

Jacky

Смежные вопросы