3

我正准备将最初使用 JSF 1.x 和 JSP 编写的 Web 应用程序移动到 JSF 2 (myFaces 2.1.7) 和 Facelets。我还认为转向 Facelets 是因为它是 JSF 2.0 中的默认视图,而且 RichFaces 4 等库也需要它。

首先,我按照以下文档作为指南来帮助我迁移代码:

从 JSP 迁移到 Facelets

就所涉及的复杂性而言,基于上述链接中的迁移路径,它似乎并不是很复杂。链接不是全图吗?

同样在我当前的代码中,还有许多脚本,例如

    <%
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
    %> 

然后basePath在页面的各个地方使用,例如在 JavaScript 函数中打开一个新页面basePath + newPage.faces和从 hiddenInput 检索的文档 Id。

使用 Facelets 如何归档以上内容?

4

1 回答 1

4

就所涉及的复杂性而言,基于上述链接中的迁移路径,它似乎并不是很复杂。链接不是全图吗?

您可以在此答案中找到更多详细信息:从 JSF 1.2 迁移到 JSF 2.0


同样在我当前的代码中,还有许多脚本,例如

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> 

basePath然后在页面的各个地方使用,例如在 JavaScript 函数中打开一个新页面+ basePathnewPage.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}不包括与您的方法相反的不必要的端口号。另请参阅如何获取基本 URL?

于 2012-05-12T02:48:08.543 回答