Struts 2, 스프링 보안 앱이 있습니다. JSP로 읽기 전용 필드를 만들 필요가있는 요구 사항이 있습니다. 로그인 한 사용자가 문서 작성자가 아닌 경우 문서를 편집 할 수 없어 정보를 볼 수 있습니다. 스트럿츠와 JSP를 사용하여 이것을 달성 할 수있는 방법이 있습니까? 아니면 읽고 편집하기 위해 다른 양식이 필요합니까?문서 생성을 기반으로 jsp 필드를 읽기 전용으로 만듭니다.
0
A
답변
1
정말 여러 가지 방법이 있습니다.
List<Document> documents;
가정 및 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>
와 인라인, 당신은 액션 함수를 호출 할 수 있습니다 :
<s:iterator value="allDocuments" var="currentDocument" status="stat">
<s:hidden name="allDocuments[%{#stat.index}"].documentId />
<s:if test="%{amIOwnerOfThisDocument(#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>
및 조치 :
public boolean amIOwnerOfThisDocument(String ownerId){
return getService().checkSomethingComplex(getCurrentUser().getId(),ownerId);
}
등등.
중요 : 악의적 인 사용자가 그에 의해 수정해서는 안 데이터 요청을 위조하는이 데이터를 JSP에서 수신받을 때 제어 서버 측의이 종류를 복제하는 것을 잊지 마세요 ... 그것은 간단합니다 예 : Firebug/Firefox 콘솔에서 readonly
속성을 제거하기 만하면됩니다.
1
이것은 현재 세션의 현재 사용자에 대한 식별 정보를 저장하고 있다고 가정합니다.
양식에 3 진수 연산자를 사용하여 readonly
인지 확인하십시오. 이 같은 뭔가 : 현재 사용자가 문서를 작성한 것과 같은 경우
<input type="text" ... ${sessionScope.userId.equals(userIdOfTheCreator)?"":"readonly"}>
다음 다른 그렇지 않으면 수행 readonly
속성을 추가하지 않습니다.
관련 문제
- 1. 사용자 역할을 기반으로 사용자 정의 필드를 읽기 전용으로 만듭니다.
- 2. QScrollArea QTextEdit을 읽기 전용으로 만듭니다.
- 3. 루아는 테이블을 읽기 전용으로 만듭니다
- 4. Resharper는 필드를 읽기 전용으로 변경합니다.
- 5. Subversion은 특정 사용자 만 읽기 전용으로 만듭니다.
- 6. Joomla의 JForms가 편집시 읽기 전용으로 만듭니다.
- 7. 문서 라이브러리에서 문서를 읽기 전용으로 만드는 방법
- 8. Office-js - 읽기 전용으로 Word 문서 저장
- 9. 업데이트하는 동안 필드를 읽기 전용으로 만드는 방법
- 10. JS를 사용하여 양식 필드를 읽기 전용으로 표시
- 11. 필드를 읽기 전용으로 유지하는 방법은 무엇입니까?
- 12. 양식의 모든 필드를 읽기 전용으로 만들기
- 13. Magento 백엔드 - 가격 필드를 읽기 전용으로 만들기
- 14. 양식 필드를 지우고 읽기 전용으로 설정하십시오.
- 15. Odoo '웹 사이트'(양식보기가 아님)에서 필드를 보이지 않게하거나 읽기 전용으로 만듭니다.
- 16. 조건부로 DetailsView 필드를 읽기 전용으로 설정하는 방법은 무엇입니까?
- 17. 각도 DateRangePicker - 캘린더 팝업에서 "To"와 "From"필드를 읽기 전용으로 만듭니다.
- 18. 기회 확률이 95 % 이상인 경우 확인란을 읽기 전용으로 만듭니다.
- 19. 일부 데이터를 가져온 후에 텍스트 상자를 읽기 전용으로 만듭니다.
- 20. 레일 : 특정 서비스를 통해 모든 곳의 속성을 읽기 전용으로 만듭니다.
- 21. 읽기 전용으로 바인딩 DependencyProperty를 다른 읽기 전용으로 설정합니다. DependencyProperty
- 22. 기본적으로 Excel은 읽기 전용으로 표시되지 않고 읽기 전용으로 열어야합니다.
- 23. 폴더가 읽기 전용으로 변경됨
- 24. 메모리를 읽기 전용으로 노출
- 25. 읽기 전용으로 SQLite 최적화
- 26. 개체를 읽기 전용으로 반환
- 27. 쿠키를 읽기 전용으로 만들기
- 28. JQxGrid를 읽기 전용으로 만들기
- 29. 고유 한 필드를 기반으로 CouchDB에서 문서 검색
- 30. 다른 (postPersist) Doctrine2의 생성을 기반으로 새 엔티티를 만듭니다.
사용자가 문서를 처음 만들 때 사용자 이름 (고유 필드)을 저장하는 문서에 createdBy 필드가 있습니다. 그리고 나는 JSP로을 사용하고있다. –
user3339592
그렇다면 현재 사용자의 사용자 이름을 가져 와서 createdBy 필드와 비교하십시오. 위와 똑같습니다. – lxcky