Struts2 - это отличная стратегия для фреймворка MVC? - PullRequest
2 голосов
/ 12 декабря 2010

Я использую JSF некоторое время назад, и я вижу, что концепция MODEL действительно важна там. Здесь, на Struts2, я вижу, что эта концепция немного устарела. Например, кажется, что невозможно установить область действия Bean-сессии; вместо этого мне нужно поместить весь Бин (объект) в сеанс (вручную).

Так что в некоторых методах это нехорошо. Например, для переключения страниц я реализовал (на странице JSP) это:

<s:div cssClass="content" id="content">
<%
    String pageValue=request.getParameter("page");
    if((pageValue!=null) && (pageValue.compareTo("articles")==0)) {
        %>
            <s:include value="articles/articles.jsp"></s:include>
        <%
    } else {
        %>
            <s:include value="homepage/homepage.jsp"></s:include>
        <%
    }
%>
</s:div> 

это правильный способ работы со Struts2? Или лучше поместить некоторые значения в Beans и сгенерировать страницу в соответствии со значениями Beans? (Концепция модели, но ДЕЙСТВИТЕЛЬНО я не знаю, как установить область действия Бина, и я не буду помещать их в сессию. Иначе как делать процедурное кодирование, и я могу использовать PHP для этого:)).

Я не знаю, как это сделать иначе:)

Приветствия

1 Ответ

1 голос
/ 12 декабря 2010

Есть несколько способов ...

1) Struts использует пружину для DI, вы также можете использовать пружину для этой цели. Посмотрите на struts2-spring-plugin

2) Вы можетеиспользуйте SessionAware, как я уже упоминал в предыдущем вопросе.Однако я упомянул, что перехватчики работают совместно, потому что объекты в области сеанса являются сквозными проблемами по самой своей природе.Без перехватчиков решение будет вынуждено существовать в ваших действиях или, что еще хуже, слой представления ... повторяется снова и снова ... что, как вы выразились, "нехорошо".

3) Если высильно ориентированный на MVC взгляд на modelDriven и scopedModelDriven.Позже будет установлена ​​модель для вашего действия, которая может находиться в области действия сеанса (возможны другие области), если модель не существует, то она будет создана для вас ... Это хорошо для многостраничных форм, успешного завершенияформа может затем удалить этот объект.Мне не очень нравится modelDriven, это может усложнить доступ к Action.

...