日期:2014-05-18  浏览次数:20748 次

关于JSP中jsp:forward的一点小疑问,求解
以下文件都基于JSF,Tomcat容器。    
有3个JSP文件:index.jsp,calculator.jsp和result.jsp。    
直接进入calculator这个页面,点击按钮,正确地进到result页面中。    
但是从index页面自动跳转到calculator页面后,点击按钮无法进到result页面。    
index.jsp代码只有一行: <jsp:forward     page= "calculator.jsp "/> .    
而如果将它改成:    
<html>    
<head>    
<meta     content= "0;URL=calculator.faces "     http-equiv= "Refresh "/>    
</head>    
</html>    
此时,自动调转到calculator页面后点按钮就可以正确进到result页面了.    
 
原因出在哪里?    
小弟发现,用jsp:forward时从index到calculator浏览器地址是不变的。    
而用后者,地址是改变的。    
难道问题就是因为地址没改变?faces-config.xml中的导航规则如下:    
<navigation-rule>    
              <from-view-id> /calculator.jsp </from-view-id>    
              <navigation-case>    
                      <from-outcome> success </from-outcome>    
                      <to-view-id> /result.jsp </to-view-id>    
                      <redirect/>    
              </navigation-case>    
      </navigation-rule>    
......    
 
先谢过各位啦

------解决方案--------------------
你用“index.jsp”跳转到calculator、访问地址是“calculator.jsp”,注意后缀是“jsp”
那么你的程序将根本不通过jsf框架来走,只是作为普通JSP页面被显示。在这个页面上点击
按钮当然没有用(根本就没有触发jsf时间).