如何在Backbase Portal 5.2.1.2中实现JSF?

时间:2012-09-19 11:01:10

标签: jsf-2 backbase-portal

我目前正在尝试向Backbase Portal 5.2.1.2添加基本的JSF(2.0)支持,以便在我的自定义小部件中使用。

当我以静态方式访问我的窗口小部件时似乎工作(例如“... / portal / static / portal_name / widgets / widget_name / index.xhtml”),但当我在上下文中查看我的窗口小部件时门户网站(... / portal / portals / portal_name / pages / index)我的JSF标记显示在HTML源代码中,而不是解析的输出。 EL变量也是如此,例如#{msg.title}。

如果我在'普通'webapp项目中使用相同的JSF设置,它也可以正常工作,所以在我看来,必须有一些特定的Backbase导致这个问题。

我想知道造成这种情况的原因是什么,如果它可以解决或规避,或者是否有人成功地在这个特定版本的Backbase中实现了JSF。我知道实现JSF在Backbase 5.1中工作,但对我来说,它不是恢复到该版本的选项。

编辑 - 按要求添加了小部件的index.xhtml(我的实际index.xhtml略大,但也失败了):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xml:lang="en">
<h:head>
    <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
    <title>Help ribbon widget</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
</h:head>
<h:body>
    <span class="left title">#{msg.help_title}</span>
    <h:outputText value="TEST"/>
</h:body>
</html>

此外,如果有任何帮助,我正在使用Border_Layout作为我的容器模板。

当我访问Google Chrome检查员的网络标签,并查看小部件的index.xhtml文件的请求时,我可以看到正确的输出,但由于某种原因,这与组合的html中显示的内容不同

1 个答案:

答案 0 :(得分:4)

此方法存在的问题是,目前预计窗口小部件定义不包含动态内容。

我猜你的场景中,* Border_Layout *容器是服务器端渲染(SSR)小部件。发生这种情况时,如果您的窗口小部件的 src URL是相对的,则门户网站将只从磁盘读取该文件,并且永远不会调用faces servlet。这是正常的,预计定义是静态的。但有两个直接的解决方案:

首先,您可以切换到客户端呈现(CSR)。这将导致客户端为窗口小部件定义发出http请求,并通过faces servlet访问它。实现此目的的最简单方法是使用不包含<b:include>标记的自定义页面模板。这个解决方案确实意味着它不适用于JS禁用。

但是,如果您希望继续使用SSR,则可以为窗口小部件的 src 属性使用绝对URL。这意味着服务器需要为窗口小部件发出http请求,从而通过faces servlet运行它。还有一个问题;由于Portal Server期望窗口小部件定义是静态的,因此它会对其进行缓存,因此您需要关闭窗口小部件缓存。

从长远来看,我不会真正推荐这两种解决方案。我建议你在一个单独的上下文中独立运行你的JSF应用程序,然后找到一种方法将它包含在一个小部件中。您可以尝试使用Backbase Mashup Services设置一些内容,但我建议使用简单的iframe方法。如果您需要,我可以为您提供更高级的iframe Backbase小部件,用于创建无缝的iframe(无滚动条等)。

如果您需要更多支持,我们建议您在https://my.backbase.com注册。 Backbase的新支持网站,您应该收到更多专门的帮助,文档和代码示例。