基于struts2的一个小动作问题

时间:2011-08-25 04:37:10

标签: spring struts2

朋友们!我正在通过vaannila的Struts 2 Spring Integration学习struts2框架 ,在运行应用程序时,我对success.jsp感到困惑,该文件的一部分如下所示:

  

<body>

  ${message}  
     

</body>

按照教程后一步一步的布局,当tomcat启动时,浏览器显示 只是成功的内容.jsp $ {message} 。但从逻辑上讲它应该表明 Spring强大的依赖注入功能。我检查了配置:

  • 操作(此处为 helloWorld.action
  • 该课程真正做了所需的动作(这里是 HelloWorld.java
  • 行动与工人阶级之间的联系

    applicationContext.xml配置了类似

    的spring bean
      <bean id="helloWorldClass" class="com.vaannila.HelloWorld" >
        <property name="message" value="Hello World!" />
      </bean>
    

    struts.xml确实命名了一个名为helloWolrd的动作来引用在applicationContext.xml中定义的bean helloWorldClass 喜欢:

     <action name="helloWorld" class="helloWorldClass">
           <result name="SUCCESS">/success.jsp</result>
     </action>
    

但似乎显示在applicationcontext.xml中定义的DependancyInjection的bean属性不能正常工作,为什么?

5 个答案:

答案 0 :(得分:2)

$ {message}应该有效。看起来你的jsp无法解析EL。首先检查你的jsp是否可以解析EL。试试$ {1 + 2}。如果它直接在浏览器上打印,请在jsp页面的顶部添加以下内容。

<%@ page isELIgnored="false"%> 

您也可以使用此功能!

<s:property value="message"/>

答案 1 :(得分:1)

你的Action中的setter是否存在 - 即setMessage(String)??

如果是,请查看弹簧是否在任何时候实际调用它 - 在此方法中使用调试器。

如果所有这些都属实,请发布文件吗?


PS - Spring的设置是否完整?就像你定义了Spring配置文件一样,web.xml确实有Spring上下文监听器,并且不要忘记在你的web应用程序中推入Spring jar。

答案 2 :(得分:0)

message”有setter和getter方法吗?它必须完全是setMessagegetMessage

答案 3 :(得分:0)

我猜你想在这里混合两件事。

  1. Spring依赖注入AND
  2. JSP范围变量
  3. ${message}将尝试在从PageScope开始直到applictionScope的各种范围内查找变量'message'。

    在哪里做

    <bean id="helloWorldClass" class="com.vaannila.HelloWorld" >
        <property name="message" value="Hello World!" />
      </bean>
    

    将在com.vaannila.HelloWorld实例中注入一个属性。这对jsp不可用。为此,您需要将此变量放在动作类的某个范围内(在请求,会话或应用程序中)。

答案 4 :(得分:0)

我认为你必须添加

<constant name="struts.objectFactory" value="spring" />

到你的struts.xml配置,使spring集成正常工作。

<struts>
    <constant name="struts.objectFactory" value="spring" />
    ...
</struts>