2010-12-11 76 views
2

我在使用JSF的时候,我发现MODEL的概念在那里非常重要。在这里,在struts2上,我看到这个概念已经过时了。例如,似乎不可能设置一个Bean会话作用域;相反,我需要将整个Bean(对象)放入会话中(手动)。Struts2 - 这是一个“MVC”框架的伟大战略吗?

因此,在某些方法中,这并不好。 例如,用于页面切换,我已经实现(在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值生成页面? (模型概念,但我真的不知道设置Bean的范围很热,我不会把它们放在会话中,否则就像程序编码,我可以使用PHP来做到这一点:))。

我不知道该怎么做,否则:)

干杯

+0

你不应该在MVC框架中使用scriplet例如。 struts2 – 2013-01-15 10:04:23

回答

1

有几种方法?

1)Struts使用弹簧DI,你也可以用弹簧这个目的看看struts2-spring-plugin

2)你可以像我在前面的问题中提到的那样使用SessionAware。不过,我确实提到拦截器协同工作,因为会话作用域对象本身就是交叉关注点。如果没有拦截器,解决方案将会被迫存在于你的行为中,或者更糟的是视图层......一遍又一遍地重复着......当你把它“不好”时。

3)如果你强烈的MVC导向看modelDriven和scopedModelDriven。后者将为您的操作设置一个模型,可以在会话范围内(其他范围是可能的),如果模型不存在,则会为您实例化...这对于多页表单很有用,成功完成该表单可以删除该对象。我不太喜欢modelDriven,它可以使访问Action变得复杂。

+0

+1到Quaternion – 2010-12-12 14:11:46

+1

实际上,Struts2使用XWork for DI,但有插件可以使用Spring或Guice。 – 2010-12-12 16:47:40

+0

但为什么是春天?我不想用Spring。 Spring是另一个框架,不是吗?我如何用一个清晰​​的Struts2应用程序来做到这一点? – markzzz 2010-12-12 21:22:36

相关问题