我的环境是RAD 8,是带有很多JSP和Servlets的7.0.x。这个应用程序还使用JAX-RPC和JAX-WS,我想介绍一下JSF,并开始迁移一些更简单的JSF。
我有一个很大的问题,那就是我不能直接迁移到JSF2.0,因为我的目标是7.x,而我发现它不支持JSF2.0。我和其他商业团体分享了WAS 7.x。所以我现在不得不使用JSF 1.2。
在RAD 8中,我尝试了以下内容:
在testJSF.jsp文件中,我使用c:redirect指向/faces/test1.jsp。我还尝试了jsp:forward to /faces/test1.jsp。Servlet映射有/ /test1.jsp /*的url模式条目,这次的*.jsp是7,给我找不到...
然后我尝试从testJSF.jsp文件中使用c:redirect到/faces/test1.jsf,我还尝试了jsp:forward到/faces/test1.jsf。这一次我也改变了,Servlet映射到/faces/*和*.jsf的url模式条目,这次是7,进入了一个堆栈溢出的无限循环。
在这些环境下,servlet映射的url-pattern应该是什么?我应该如何引用新的JSF1.2页面?
发布于 2011-12-15 17:59:17
您应该可以使用JSF 2.0,因为Websphere 7.0实现了Servlet 2.5规范(据我所知)。
/faces/*或*.jsf映射应该没问题,可能在其他地方有配置问题...您需要提供更多详细信息。
为什么需要.jsp来测试JSF页面?如果直接从浏览器打开页面,会发生什么情况?
发布于 2011-12-15 21:52:10
faces Servlet映射具有针对/
/和.jsp的url模式条目
不应为FacesServlet指定*.jsp映射。此模式是为servlet容器的内置JspServlet保留的。通过这种方式,FacesServlet永远无法获得正确的JSP文件来显示视图。
带有/faces/和.jsf的url模式条目的
Servlet映射(这次是7)陷入了堆栈溢出的死循环。
您不应该给实际视图文件一个.jsf扩展名,而应该给它一个.jsp扩展名。
正确的设置如下:
FacesServlet映射到单独的*.jsf上。facesServlet javax.faces.webapp.FacesServlet facesServlet *.jsf
您也可以改用/faces/*,或者添加它,但是这样做比较丑陋,并且不允许轻松迁移到JSF2.0。
.jsp扩展名。viewid.jsp
<%@taglib uri="http://java.sun.com/jsf/core“prefix="f”%> <%@taglib uri="http://java.sun.com/jsf/html“prefix="h”%> JSF1.2测试页
<c:redirect>或<jsp:forward>,这没有任何意义。直接通过URL调用页面就可以了:http://localhost:8080/contextname/viewid.jsf
注意网址中的.jsf扩展名。这将调用FacesServlet。然后,它将找到viewid.jsp文件并显示它。
另请参阅:
https://stackoverflow.com/questions/8515890
复制相似问题