2011-10-19 10 views
3

私のアプリには2つのロールがあります。ROLE_ADMIN & ROLE_USER また、いくつかのフィールドがあるフォームがあります。次のようにします: ユーザーがADMINロールを持っている場合、特定のフィールドグループを編集できます。ユーザーがUSERロールを持っている場合、これらのフィールドは編集できません。私は、2つの異なる形、またはすべての役割のためのフィールドの2つのコピーを持つことを望んでいません。Struts2無効<s:textfield>一部の表現を使用

私はそのような何かしようとした:

< S:テキストフィールドのキー= "..." 無効= "$ {myFlag}" myFlagが役割から評価 >を、。

しかし、「無効」は実行時の式をサポートしていないという警告があります。

これを行う方法はありますか?あるいは、例えば、生成された入力をラベルに置き換えるなど、より良い方法がありますか?

ありがとうございます。

答えて

11

あなたはStruts2のタグ%{expression}構文によって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これらのフィールドに属性と身体onloadイベントに呼ばEすべきjavascript関数を書く

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

私は平凡なjavascriptでgetElementByClass()について確信していませんが、jQueryの$(".yourClass").attr('disabled',true); worlksは完全に

関連する問題