我的应用中有两个角色,ROLE_ADMIN& ROLE_USER 我还有一些带有一些字段的表格。我想要以下内容: 当用户具有ADMIN角色时,他能够编辑特定的字段组,当用户具有USER角色时,他无法编辑这些字段。我不想为每个角色提供两种不同的形式或两个字段副本。
我试着这样做:
< s:textfield key =“...” disabled =“$ {myFlag}”>,其中myFlag从角色进行评估。
但我警告“禁用”不支持运行时表达式。
有没有办法做到这一点?或者可能有更好的方法,例如,将生成的输入替换为标签?
提前致谢。
答案 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);
完全符合