문제

스프링 : 양식 태그를 사용하는 JSP가 있습니다.

다음과 같이 수정하고 싶습니다. [일부 조건이 true] 컨트롤을 표시하는 것보다; 그렇지 않으면 텍스트 만 표시하십시오. (예 : 사용자가 관리자 인 경우 컨트롤을 표시하고 그렇지 않으면 텍스트를 표시하십시오. WhatsIT가 여전히 수정을 위해 열린 경우 컨트롤을 표시하고 텍스트를 표시하십시오.)

다시 말해, 나는 이것을 원한다 :

<c:choose>
     <c:when test="SOME TEST HERE">
          <form:input path="SOME PATH" />
     </c:when>
     <c:otherwise>
          <p>${SOME PATH}</p>
     </c:otherwise>
</c:choose>

그러나 나는 모든 분야에서 이것을 만들 수있는 쉬운 방법을 원합니다 (많은 것이 있습니다).

위의 텍스트를 생성하기 위해 사용자 정의 태그를 만들면 ( "일부 경로") 스프링 사용자 정의 태그가 바인딩 되나요?

내가 정말로 묻는 것은 : 스프링 사용자 지정 태그를 생성하는 사용자 정의 태그를 만들 수 있습니까? 그 다음에 구속력이 있습니까? 아니면 모든 맞춤형 태그 (광산 및 스프링)가 동시에 처리됩니까?

도움이 되었습니까?

해결책

종종 유일한 해결책은 시도하는 것입니다.

JSP 사용자 정의 태그 라이브러리, 매개 변수화 된 JSP 포함 및 JSP2 태그 파일의 세 가지 방법을 시도했습니다.

처음 두 개는 작동하지 않았지만 (태그 라이브러리가 작동하도록 할 수 있다고 생각하지만) 태그 파일이 그랬습니다! 솔루션은 전문가 스프링 MVC 및 웹 흐름.

다음은 Web-Inf/Tags/RenderConditionalControl.tag의 내 코드입니다.

<%@ tag body-content="tagdependent" isELIgnored="false" %>
<%@ attribute name="readOnly" required="true" %>
<%@ attribute name="path" required="true" %>
<%@ attribute name="type" required="false" %>
<%@ attribute name="className" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="form" uri="/WEB-INF/spring-form.tld" %>
<%@ taglib prefix="spring" uri="/WEB-INF/spring.tld" %>

<c:if test="${empty type}">
<c:set var="type" value="text" scope="page" />
</c:if>

<spring:bind path="${path}">
    <c:choose>
        <c:when test="${readOnly}">
            <span class="readOnly">${status.value}</span>
        </c:when>
        <c:otherwise>
           <input type="${type}" id="${status.expression}" name="${status.expression}"
                    value="${status.value}" class="${className}" />
        </c:otherwise>
    </c:choose>
</spring:bind>

그리고 다음은 JSP의 코드입니다.

먼저, 다른 taglibs 지침과 함께 :

<%@ taglib tagdir="/WEB-INF/tags" prefix="tag" %> 

그리고 양식 내에서 :

<tag:renderConditionalControl path="someObject.someField" type="text" readOnly="${someBoolean}" className="someClass" />
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top