从JSP迁移到Facelets,如何替换一些scriptlet?

时间:2012-05-12 01:15:51

标签: jsf-2 migration facelets

我准备将我用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如何存档?

1 个答案:

答案 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?