我准备将我用JSF 1.x和JSP初步编写的Web应用程序移动到JSF 2(myFaces 2.1.7)和Facelets。我还推测移动到Facelets,因为它是JSF 2.0中的默认视图,而RichFaces 4等库也需要它。
首先,我按照以下文档作为指导来帮助我迁移代码:
Migrating from JSP To Facelets
就复杂性而言,基于上述链接中的迁移路径,它似乎并不复杂。链接不是全貌吗?
同样在我当前的代码中有许多划线,例如
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
然后在页面的各个位置使用basePath
,例如,在JavaScript函数中打开一个新的页面basePath + newPage.faces
,并从hiddenInput重新获取文档ID。
使用Facelets如何存档?
答案 0 :(得分:4)
就所涉及的复杂性而言,基于上述链接中的迁移路径,它似乎并不复杂。链接不是全貌吗?
您可以在此答案中找到更多详细信息:Migrating from JSF 1.2 to JSF 2.0
同样在我当前的代码中有许多划线,例如
<% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %>
然后在页面的各个位置使用
basePath
,例如,在JavaScript函数中打开一个新的页面basePath
+ newPage.faces和从hiddenInput重新获取的文档ID。使用Facelets如何归档上述内容?
只需<ui:param>
和EL。
<ui:param name="path" value="#{request.contextPath}" />
<ui:param name="basePath" value="#{request.requestURL.substring(0, request.requestURL.length() - request.requestURI.length())}#{path}/" />
它将以#{path}
和#{basePath}
的形式提供。
window.location = '#{basePath}newpage.xhtml?id=' + encodeURIComponent(someparam);
请注意,此#{basePath}
因此不包含与您的方法相反的不必要的端口号。另请参阅How get the base URL?