这是我earlier question的扩展。当我们将SSJS库导出到DXL时,我们得到的输出包含:
<item name="$ServerJavaScriptLibrary" sign="true">
<rawitemdata type="1">
....ENCODED SSJS....
</rawitemdata>
</item>
我之前认为这里使用的编码方案是Base64。但在尝试不成功导入SSJS库之后,我认为不是。在搜索时,我发现type="1"
引用了TYPE_COMPOSITE
而type="14
“引用了Base64(如果我错了,请纠正我)。我尝试使用type="14"
在我的XML文件中,将Base64编码的代码放在rawitemdata
标签中,然后尝试导入该文件。它在数据库中创建了SSJS库,但其内容为空白。
我发现this link通过在Base64中对其进行编码来导入主题,但是它通过“YQAYAAAAAAA6AAAAAAAAAAAAAAAAAAAAYABMAAAAOgA6AAAAAAAAAAAA”预编码字符串。我试图在我的编码SSJS代码中添加它,然后导入它但仍然不成功。
应该使用哪种编码方案,以便我可以在我的数据库中导入SSJS代码?
答案 0 :(得分:1)
SSJS库存储在richtext记录中。 SSJS库数据之前的编码字符串是这些记录的base64编码头信息。
在这里,您可以找到如何使用DXL封装和导入SSJS库到数据库的工作示例: Quick-n-Dirty: Import SSJS libraries with DXL
答案 1 :(得分:0)
前置字符串是校验和;将库导出到DXL时,Base64包含一个允许导入器验证内容的前缀。将XPage和Custom Control设计元素导出到DXL时也会使用此校验和方法。因此,如果您完全按导出导入此DXL,则导入将成功。但是,如果您修改编码内容并在其前面添加相同的前缀,则导入将失败,因为校验和将不再匹配。
我已经要求IBM提供有关使用什么算法生成此校验和以允许导入外部生成的设计元素但从未收到过响应的信息。