【问题标题】:How to do the task of "<jsp:include page="servletName" />" using Struts如何使用Struts完成“<jsp:include page="servletName" />”的任务
【发布时间】:2012-06-13 11:29:06
【问题描述】:

在我的 JSP 页面中,添加了一个标签 &lt;jsp:include page="servletName" /&gt;。这里的 servletName 是 HttpServlet 类,该类向 Request 对象添加了一些属性。然后,再次在 jsp 页面中,检索设置给请求对象的值(已经做了这件事以减少 jsp 页面中的代码行数)。

我想在 Struts 2 应用程序中执行此操作。

我想调用一个动作类(类似于普通 jsp 应用程序中的 &lt;jsp:include /&gt;),然后该类将一些值设置为 Request object(Value Stack) 。然后应该使用 Struts 标签在 jsp 类中检索这些值。

我该怎么做?

另外,如何发送一个绑定到jsp页面的请求参数并发送到action类? here 显示我想要的东西:

<s:action name="Login" flush="true" executeResult="true" namespace="/secure"/>   

但我不清楚如何编写execute() 和struts.xml 以及使用的属性。谁能帮我解决一下?

【问题讨论】:

    标签: jsp servlets struts


    【解决方案1】:

    使用&lt;s:action&gt; tag

    不过,我质疑这样做的必要性;如果这样做的频率足以保证这一点,请考虑使用实现 Preparable 的基本动作类,并创建一个特定于应用程序的子类方法来为需要自己准备的动作添加行为。

    IMO 依赖视图添加它需要的对象是违反关注分离的。

    【讨论】:

    • 谢谢。您能否通过示例代码更多地解释如何使用
    • 动作没有渲染任何东西——动作类返回什么并不重要。该配置看起来像任何操作配置。标签文档清楚地显示了您正在讨论的示例 - 请考虑先检查文档。
    • 谢谢戴夫先生。我提到了它。并按照医生的说法进行了尝试。但是现在,页面的内容重复了很多次。 :( . 这里在 jsp ` ` 在 struts.xml &lt;action name="ActionName" class="org.app.action.ActionName" &gt; &lt;result name="success" &gt;/index.jsp&lt;/result&gt; &lt;/action&gt; .
    • @AashMaharoon 为什么要执行一个动作的结果,其唯一目的是将对象放入范围?
    • 感谢您的关注。你的意思是 executeResult="false" 之前设置为 true。我将其更改为 false,现在可以了。那么如何向该操作发送带有值的参数呢?我的目的是,发送一个参数并从动作中获取它,然后根据参数的值显示值。
    【解决方案2】:

    使用 Struts IncludeAction 喜欢。

    <jsp:include page=”/App1/legacyA.do” />
    
    <action path=”/legacyA”
    parameter=”/xoom/LegacyServletA”
    type=”org.apache.struts.actions.IncludeAction” />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多