在EL中引用bean属性(id)时,我使用#{bean.id}
。
我现在要求用一些静态文本预先添加数据。我这样做是通过使用SSJS:"sometext" + bean.getId();
有没有办法可以在SSJS中使用EL符号?例如"sometext" + #{bean.id};
我意识到在这个例子中并没有太大的不同,但是在请求更复杂或嵌套的属性时,我认为它会有用。
答案 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 + '}'}"/>
。同样,这是情境性的,但可能有用。