在<jsp:include/>中引用action不能正常显示
在 <jsp:include/> 中引用多个action遇到不能正常显示的问题,只能显示第一个action的内容,相关文件如下:
1,include.jsp的内容:
代码
1. <jsp:include page= "test1.do "/>
2. <jsp:include page= "test2.do "/>
2,struts-config.xml的部分内容:
代码
1. <action path= "/test1 " name= "myForm " type= "TestAction1 " scope= "request " validate= "true " input= "/error.jsp ">
2. <forward name= "test " path= "/test1.jsp "/>
3. </action>
4. <action path= "/test2 " name= "myForm " type= "TestAction2 " scope= "request " validate= "true " input= "/error.jsp ">
5. <forward name= "test " path= "/test2.jsp "/>
6. </action>
3,TestAction1的内容(TestAction2的内容类似)
代码
1. import javax.servlet.http.HttpServletRequest;
2. import javax.servlet.http.HttpServletResponse;
3. import org.apache.struts.action.Action;
4. import org.apache.struts.action.ActionForm;
5. import org.apache.struts.action.ActionForward;
6. import org.apache.struts.action.ActionMapping;
7.
8. public class TestAction1 extends Action
9. {
10. public ActionForward execute(
11. ActionMapping actionMapping,
12. ActionForm actionForm,
13. HttpServletRequest request,
14. HttpServletResponse response)
15. {
16. return actionMapping.findForward( "test " );
17. }
18. }
4,test1.jsp的内容(test2.jsp的内容相似)
代码
1. test1: <br />
2. <%=new java.util.Date()%>
当在浏览器中打开include.jsp时,只能显示test1.jsp的内容,即
=============================
test1:
Sat Aug 25 12:57:16 CST 2007
=============================
但我将include.jsp改为如下内容时,就能正常显示,
代码
1. XXXX
2. <jsp:include page= "test1.do " flush= "true "/>
3. <jsp:include page= "test2.do "/>
“XXXX”可以是任意长度的任意字符,显示的结果为:
=============================
XXXX test1:
Sat Aug 25 12:59:01 CST 2007 test2:
Sat Aug 25 12:59:01 CST 2007
=============================
但是去掉“XXXX”或者“flush= "true "”就都只能显示test1.jsp的内容。请问这是什么原因?我估计是struts跳转到jsp时出现的问题。
另外,若不通过struts,直接include jsp文件,比如,修改include.jsp的为以下内容,是两个jsp的内容都可以显示的。
代码
1. <jsp:include page= "test1.jsp "/>
2. <jsp:include page= "test2.jsp "/>
我的struts版本是1.2.7,jsp容器是tomcat5.0.28,jdk是1.5
[解决办法]
顶
[解决办法]
应该和 <jsp:include page= "test1.do "> 的flush= "true "属性有关。
当flush属性为true,表示在执行插入操作之前,先调用当前页面的输出流的flush()方法。
[解决办法]
2. <forward name= "test " path= "/test1.jsp "/>
3. <forward name= "test " path= "/test2.jsp "/>
2个test的值
[解决办法]
我猜想是不是由于struts容器在解释action路径时,是当前工作目录发生了改变,将你的相对路径换为全路经试试:如jsp:include page= " <%=context_url%> /test1.do "
[解决办法]
struts 要包含页面,我一般用 frame,这样没有问题,