基于文档创建将jsp字段设置为只读
我有一个Struts 2,spring安全应用程序。我需要将JSP中的字段设置为只读。如果登录的用户不是文档的创建者,则他/她不能编辑文档,只能查看信息。有什么方法可以使用struts和JSP实现这一点吗?或者我需要一个不同的表格来阅读和编辑 这是假设您正在会话中为当前用户保存某种标识 在表单上,使用三元运算符确定它是否应为基于文档创建将jsp字段设置为只读,jsp,struts2,jsp-tags,Jsp,Struts2,Jsp Tags,我有一个Struts 2,spring安全应用程序。我需要将JSP中的字段设置为只读。如果登录的用户不是文档的创建者,则他/她不能编辑文档,只能查看信息。有什么方法可以使用struts和JSP实现这一点吗?或者我需要一个不同的表格来阅读和编辑 这是假设您正在会话中为当前用户保存某种标识 在表单上,使用三元运算符确定它是否应为只读。 大概是这样的: <input type="text" ... ${sessionScope.userId.equals(userIdOfTheCreator)?
只读
。
大概是这样的:
<input type="text" ... ${sessionScope.userId.equals(userIdOfTheCreator)?"":"readonly"}>
如果当前用户与创建文档的用户相同,则不要添加
readonly
属性,否则请添加其他属性。确实有几种方法可以做到这一点
假设一个列表文档
,以及具有诸如documentId
、ownerId
、description
等字段的Document
对象,以及存储在某处并可通过getCurrentUser()访问的用户对象(例如,从由其他对象扩展的BaseAction),您可以使用
<s:iterator value="allDocuments" var="currentDocument" status="stat">
<s:hidden name="allDocuments[%{#stat.index}"].documentId />
<s:if test="%{currentUser.id.equals(#currentDocument.ownerId)}">
<s:textfield name="allDocuments[%{#stat.index}"].description" />
</s:if>
<s:else>
<s:textfield name="allDocuments[%{#stat.index}"].description"
readonly="true" />
</s:else>
<br/>
</s:iterator>
等等
重要提示:在接受从JSP接收的数据时,不要忘记复制这种控制服务器端。。。恶意用户很容易伪造数据请求,这些数据不应被他修改,例如,使用Firebug/Firefox控制台,只需删除
readonly
属性。我在文档中创建了字段,当用户首次创建文档时,该字段保存用户名(唯一字段)。我正在JSP中使用。那很好,现在获取当前用户的用户名,并将其与createdBy字段进行比较。如上所述。