Struts2使用某些表达式</s:textfield>禁用<s:textfield>

时间:2011-10-19 06:03:43

标签: jsp struts2 expression

我的应用中有两个角色,ROLE_ADMIN&amp; ROLE_USER 我还有一些带有一些字段的表格。我想要以下内容: 当用户具有ADMIN角色时,他能够编辑特定的字段组,当用户具有USER角色时,他无法编辑这些字段。我不想为每个角色提供两种不同的形式或两个字段副本。

我试着这样做:

&lt; s:textfield key =“...” disabled =“$ {myFlag}”&gt;,其中myFlag从角色进行评估。

但我警告“禁用”不支持运行时表达式。

有没有办法做到这一点?或者可能有更好的方法,例如,将生成的输入替换为标签?

提前致谢。

2 个答案:

答案 0 :(得分:11)

您应该在 Struts2标记中使用%{expression}语法中的 OGNL表达式

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

  

如何在页面上设置此类变量?

不适用于%{myFlag}?或者你可以通过

设置变量
<s:set var="flag">${myFlag}</s:set>

实施:

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

答案 1 :(得分:0)

cssClass属性添加到这些字段并编写一个javascript函数,该函数应在正文onload事件上调用

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

我不清楚普通javascript中的getElementByClass(),但jQuery的$(".yourClass").attr('disabled',true);完全符合