在SSJS中使用表达式语言

时间:2015-09-14 18:46:05

标签: xpages xpages-ssjs

在EL中引用bean属性(id)时,我使用#{bean.id}

我现在要求用一些静态文本预先添加数据。我这样做是通过使用SSJS:"sometext" + bean.getId();

有没有办法可以在SSJS中使用EL符号?例如"sometext" + #{bean.id};

我意识到在这个例子中并没有太大的不同,但是在请求更复杂或嵌套的属性时,我认为它会有用。

1 个答案:

答案 0 :(得分:8)

虽然理论上你可以在SSJS块中执行任意EL,但它太值得做了(可能类似于facesContext.getApplication().createValueBinding("#{bean.id}").getValue(facesContext))。

可以,当您想要做的事情符合需求时,在同一属性中混合绑定类型。例如:<xp:text value="#{javascript:doFoo()} some other text #{bean.id}"/>。这符合你问题的具体情况,但可能不适合实际的更大需求。

适合其他情况的相关技术是使用加载时SSJS(或其他)绑定来生成运行时EL绑定。例如:<xp:fileDownload value="${javascript:'#{' + compositeData.dataSource + '.' + compositeData.fieldName + '}'}"/>。同样,这是情境性的,但可能有用。