Jsf 2 从JSP到Facelets,如何替换一些Scriptlet?

Jsf 2 从JSP到Facelets,如何替换一些Scriptlet?,jsf-2,migration,facelets,Jsf 2,Migration,Facelets,我准备将最初使用JSF1.x和JSP编写的web应用程序迁移到JSF2(MyFaces2.1.7)和Facelets。我还解释了迁移到Facelets的原因,因为它是JSF2.0中的默认视图,而且RichFaces 4等库也需要它 首先,我遵循以下文档作为指导,以帮助我迁移代码: 就涉及的复杂性而言,基于上述链接中的迁移路径,它似乎并不十分复杂。链接不是全部吗 在我当前的代码中,还有许多涂鸦,例如 <% String path = request.getContextPa

我准备将最初使用JSF1.x和JSP编写的web应用程序迁移到JSF2(MyFaces2.1.7)和Facelets。我还解释了迁移到Facelets的原因,因为它是JSF2.0中的默认视图,而且RichFaces 4等库也需要它

首先,我遵循以下文档作为指导,以帮助我迁移代码:

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

在我当前的代码中,还有许多涂鸦,例如

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

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

使用Facelets,如何存档上述内容

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

您可以在以下答案中找到更详细的信息:


在我当前的代码中,还有许多涂鸦,例如

它将以
{path}
{basePath}
的形式提供

window.location = '#{basePath}newpage.xhtml?id=' + encodeURIComponent(someparam);

请注意,与您的方法相反,此
{basePath}
因此不包括不必要的端口号。另请参见

非常感谢您的回复@BalusC。感谢你分享你的知识和时间。Cheers@BalusC,我有点惊讶,
可以这样使用,但它似乎确实有效,至少在Mojarra上是如此。这些文档都谈到使用
将参数传递到
文件或模板。以这种方式使用
在文件中创建快捷方式变量是否被普遍接受?
<ui:param name="path" value="#{request.contextPath}" />
<ui:param name="basePath" value="#{request.requestURL.substring(0, request.requestURL.length() - request.requestURI.length())}#{path}/" />
window.location = '#{basePath}newpage.xhtml?id=' + encodeURIComponent(someparam);