在 SSJS 中使用表达式语言
Using Expression Language in SSJS
在 EL 中引用 bean 属性 (id) 时,我使用 #{bean.id}
。
我现在需要在该数据前添加一些静态文本。我通过使用 SSJS 来做到这一点:"sometext" + bean.getId();
有没有办法在 SSJS 中使用 EL 表示法?例如 "sometext" + #{bean.id};
我意识到在这个例子中它并没有太大的不同,但是当请求更复杂或嵌套的属性时,我认为它会很有用。
虽然理论上您可以在 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 + '}'}"/>
。同样,这是视情况而定,但可能很有用。
在 EL 中引用 bean 属性 (id) 时,我使用 #{bean.id}
。
我现在需要在该数据前添加一些静态文本。我通过使用 SSJS 来做到这一点:"sometext" + bean.getId();
有没有办法在 SSJS 中使用 EL 表示法?例如 "sometext" + #{bean.id};
我意识到在这个例子中它并没有太大的不同,但是当请求更复杂或嵌套的属性时,我认为它会很有用。
虽然理论上您可以在 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 + '}'}"/>
。同样,这是视情况而定,但可能很有用。