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

Ale*_*r K 3 jsp expression struts2

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

我试着这样做:

<s:textfield key ="..." disabled ="$ {myFlag}" >,其中myFlag从角色评估.

但我警告"禁用"不支持运行时表达式.

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

提前致谢.

lsc*_*hin 11

您应该使用OGNL表达式通过%{expression}语法在Struts2的标签.

<s:textfield disabled="%{myFlag}" />
Run Code Online (Sandbox Code Playgroud)

如何在页面上设置这样的变量?

不适用%{myFlag}?或者你可以设置变量

<s:set var="flag">${myFlag}</s:set>
Run Code Online (Sandbox Code Playgroud)

实施:

<s:textfield disabled="#flag" />
Run Code Online (Sandbox Code Playgroud)