2011-10-19 39 views
3

我在我的應用程序中有兩個角色,ROLE_ADMIN & ROLE_USER 另外我也有一些帶有一些字段的表單。我想要具有以下內容: 當用戶具有ADMIN角色時,他可以編輯特定的一組字段,當用戶具有USER角色時,他無法編輯這些字段。我不想有兩種不同的形式,或者每個角色都有兩個字段副本。Struts2禁用<s:textfield>使用一些表達式

我試圖做這樣的事情:

< S:文本框鍵= 「...」,其中myFlag從角色評估禁用= 「$ {} myFlag」 >。

但我警告「disabled」不支持運行時表達式。

有沒有辦法做到這一點?或者,也許有更好的方法,例如,通過將生成的輸入替換爲標籤?

在此先感謝。

回答

11

你應該%{expression}語法在Struts2的標籤使用OGNL表達

<s:textfield disabled="%{myFlag}" /> 

我怎麼可以設置頁面上這樣的變量?

不能與%{myFlag}工作?或者你可以通過設置變量

<s:set var="flag">${myFlag}</s:set> 

實現:

<s:textfield disabled="#flag" /> 
+0

我該如何在頁面上設置這樣的變量?我試過c:set或s:set,不能和OGNL一起工作 –

0

添加cssClass屬性,這些領域並編寫JavaScript函數應該ê呼籲身體onload事件

function calledonbodyload() { 
<s:if test="%{role=='ROLE_USER'}"> 
    document.getElementsByClass("yourClass").disabled=true; 
</s:if> 
} 

我不清楚getElementByClass()在純javascript,但jQuery的$(".yourClass").attr('disabled',true); worlks完美

相關問題