2014-08-28 63 views
2

我在xpages中使用了一些<xp:this.facets>元素。xpages将html文件添加到facets中

我已经将一个html文件导入到我的资源中。我想用这个方面来显示这个html文件,但我没有取得任何成功。

他们正在使用的XPAGE因为我想显示正确的安排无数的布局。

对于自定义的控制,我没有使用这样的:

<xc:layout> 
      <xp:this.facets> 
       <xc:view_all xp:key="facet_1"></xc:view_all> 

      </xp:this.facets> 
    </xc:layout> 

我该怎么办我test.html是一回事吗?

+0

是否要将html标记粘贴到方面内?或只是插入文件的内容(即从文件资源)? – 2014-08-28 06:51:12

+0

我想这个文件的内容是可以的。 – 2014-08-28 06:55:20

回答

1

这已被斯文哈塞尔巴赫解释说:

http://hasselba.ch/blog/?p=752

在最基础层面上,你可以转储文件资源的内容(从你的资源\文件中的NSF数据库中)为计算文本并将其作为一个方面。

<xc:layout> 
    <xp:this.facets> 
     <xp:text 
      escape="false" 
      xp:key="facet_1" 
      id="computedField1"> 
       <xp:this.value><![CDATA[#{javascript: 
        var url = "/test.html"; 
        var data = facesContext.getExternalContext(). 
         getResourceAsStream(url); 
        var txt = ""; 
        while(data.available()){ 
         txt += @Char(data.read()); 
        } 
        txt}]]> 
       </xp:this.value> 
     </xp:text> 
    </xp:this.facets> 
</xc:layout> 

一个简单的说明,在JSF生命周期中,此代码将运行多次。所以我建议把它放到一个SSJS库中,并根据你的情况在viewScope/applicationScope变量中缓存一次。否则在循环过程中会浪费一些内存和CPU。

+0

是的,的确,我必须等待几秒钟,直到显示内容。 – 2014-08-28 07:53:50

+0

这取决于文件的大小。我会使用Java bean进行这种缓存。 – 2014-08-28 07:54:59