Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于文档创建将jsp字段设置为只读_Jsp_Struts2_Jsp Tags - Fatal编程技术网

基于文档创建将jsp字段设置为只读

基于文档创建将jsp字段设置为只读,jsp,struts2,jsp-tags,Jsp,Struts2,Jsp Tags,我有一个Struts 2,spring安全应用程序。我需要将JSP中的字段设置为只读。如果登录的用户不是文档的创建者,则他/她不能编辑文档,只能查看信息。有什么方法可以使用struts和JSP实现这一点吗?或者我需要一个不同的表格来阅读和编辑 这是假设您正在会话中为当前用户保存某种标识 在表单上,使用三元运算符确定它是否应为只读。 大概是这样的: <input type="text" ... ${sessionScope.userId.equals(userIdOfTheCreator)?

我有一个Struts 2,spring安全应用程序。我需要将JSP中的字段设置为只读。如果登录的用户不是文档的创建者,则他/她不能编辑文档,只能查看信息。有什么方法可以使用struts和JSP实现这一点吗?或者我需要一个不同的表格来阅读和编辑

这是假设您正在会话中为当前用户保存某种标识

在表单上,使用三元运算符确定它是否应为
只读
。 大概是这样的:

<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字段进行比较。如上所述。