【问题标题】:Struts 2 s:include tag not working for header jspf fileStruts 2 s:include 标记不适用于标头 jspf 文件
【发布时间】:2015-01-28 23:23:07
【问题描述】:

我有 index.jsp,其中包含 header.jspf、主要内容和页脚 jspf。我正在使用 s include 来包含页眉和页脚 jspf。

我的标头 jspf 包含带有参数值的 surl 标签。我已经在其中包含了 s tagslib。

我的 index.jsp/header.jspf 都包含 taglib 声明。

<%@taglib prefix="s" uri="/struts-tags"%>

我的头操作文件如下所示,

public class Header extends ActionSupport {

    public Header() {
    }

    @Override
    public String execute() throws Exception {
         return SUCCESS ;
    }

}

我的 struts xml 声明如下

  <action name="Header" class="org.mypackage.mypackagename.Header" method="execute" > 
            <result name="SUCCESS">/WEB-INF/views/header/header.jspf</result>
            <result name="error">/WEB-INF/views/error-page.jsp</result>
        </action>

在索引jsp中,我将jspf包含为,

  <s:include value="/WEB-INF/views/header/header.jspf"/>

但由于某些原因,这永远不会起作用,它会在标题部分显示源代码/损坏的 html。我在 index.jsp 中也有 struts 2 html 标签,这似乎工作得很好。

同样的设置适用于非欢迎页面的子页面。

我是否需要使用准备接口来包含标头 jspf。我的页脚 jspf 不包含任何 struts 标记,所以它可能看起来工作正常。

我看不到这里发生了什么,所以需要一些其他的想法。

索引 jsp 在 web xml 中被声明为欢迎页面。

【问题讨论】:

  • 不要调用确切的页面,而是调用操作名称(例如“标题”)。
  • 感谢用户,让我检查一下再回来。
  • 将您的片段更改为纯 jsp,它应该可以工作。
  • 抱歉回复晚了,我摔断了胳膊。 Aleksandr,我尝试将 jspf 更改为 jsp,但它不起作用

标签: java jsp struts2 jspinclude struts-config


【解决方案1】:

如果Head 只是一个JSP 片段,而您真正的完整页面是Index.jsp,那么您应该将那个 页面映射到一个动作,而不是片段本身:

索引.jsp

<!DOCTYPE html>
<html>
    <head>
        <s:include value="/WEB-INF/views/header/header.jspf"/>
    </head>
    <body>
        <h2> This is Index.jsp </h2>

        <s:include value="/WEB-INF/views/header/footer.jspf"/>
    </body>
</html>

Struts.xml

<action name="Login" class="org.mypackage.mypackagename.Login" method="execute">
    <result name="success">/WEB-INF/views/login.jsp</result>
    <result name="error">/WEB-INF/views/error-page.jsp</result>
</action>

注意"SUCCESS" 是错误的:它应该是"success",或者Action.SUCCESS(一个常量,也在ActionSupport 中,映射到"success")。

【讨论】:

  • 谢谢安德里亚,让我检查一下,然后再回复你。
  • 对不起,我没有得到这个解决方案安德里亚。请你再解释一下。
  • @Kiran 不要将您s:includes 的片段用作操作结果。
  • 是的 Roman 我确实解决了这个问题。我没有在这个项目中使用片段。
【解决方案2】:

使用sitemesh 或tile 进行页面装饰,如页眉和页脚等。Sitemesh 是我推荐的。它与 struts2 无关,无需创建页眉和页脚 struts2 动作来实现这一点。

你可以在网上搜索一下sitemesh + struts2的实现例子。

如果您不愿意检查 sitemesh 或任何其他装饰框架,最好创建页眉和页脚 jsp 或 html 并将其包含(jsp:inlcude 标记)在您的 index.jsp 或您想要显示页眉的任何 jsp和页脚。

【讨论】:

  • 谢谢尼克。让我探索这些选项。
猜你喜欢
  • 1970-01-01
  • 2017-04-24
  • 2015-06-02
  • 2017-08-20
  • 2018-04-13
  • 2015-06-30
  • 2010-12-08
  • 2022-07-06
  • 2013-07-08
相关资源
最近更新 更多