當引用EL中的bean屬性(id)時,我使用#{bean.id}
。在SSJS中使用表達式語言
我現在有一個要求,用一些靜態文本前置這些數據。我通過使用SSJS來做到這一點:"sometext" + bean.getId();
有沒有一種方法可以在SSJS中使用EL符號?例如"sometext" + #{bean.id};
我意識到,在這個例子中它沒有太大的不同,但是當請求更復雜或嵌套的屬性時,我認爲它會有用。
當引用EL中的bean屬性(id)時,我使用#{bean.id}
。在SSJS中使用表達式語言
我現在有一個要求,用一些靜態文本前置這些數據。我通過使用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 + '}'}"/>
。再次,這是情景,但可以是有用的。
謝謝傑西。您在第二段中描述的技術完全適合這種情況,因爲前置文本是靜態的,所以我可以完全取消SSJS。 –
在這種情況下,自定義語言非常好(略)最佳實踐。你只有一個組件,所以處理服務器端的代碼少,所以更好的性能(儘管最低限度)和更少的HTML傳遞給瀏覽器(因爲只有一個HTML元素)。 –