我有index.jsp,其中包含header.jspf,主要内容和页脚jspf。我使用s include来包含页眉和页脚jspf。
我的标题jspf包含带有param值的surl标记。我在其中包含了s taglib。
我的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 as,
<s:include value="/WEB-INF/views/header/header.jspf"/>
但由于某些原因,它永远不会起作用,它会在标题部分显示源代码/破坏的html。我在index.jsp中也有struts 2 html标签,看起来效果很好。
相同的设置适用于不受欢迎页面的子页面。
我是否需要使用prepare接口来包含头jspf。我的页脚jspf不包含任何struts标签,所以可能它似乎工作正常。
我无法看到这里发生什么,所以需要一些其他的想法。
索引jsp在web xml中被声明为welcomme页面。
答案 0 :(得分:1)
如果Head
只是一个JSP片段,并且您的真实整页是Index.jsp,那么您应该将那个页面映射到一个Action,而不是片段本身:
的index.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"
)。
答案 1 :(得分:1)
使用sitemesh或tile进行页面装饰,如页眉和页脚等.Trememesh是我推荐的。它与struts2无关,不需要创建页眉和页脚struts2动作来实现这一点。
您可以在网上搜索sitemesh + struts2的实现。
如果你不愿意检查sitemesh或任何其他装饰框架,最好创建页眉和页脚jsp或html并在index.jsp中包含(jsp:inlcude标签)或者你想要显示标题的jsp和页脚。