Pergunta

Eu tenho um JSP que está usando Spring: marcas de formulário para controles se ligam a um objeto de comando

.

Gostaria de modificá-lo da seguinte forma: if [alguma condição é verdade] do que exibir os controles; Caso contrário, basta exibir o texto. (Exemplos:.. Se o usuário é um administrador, exibir os controles, caso contrário apenas exibir o texto Se o whatsit ainda está aberto para modificação, exibir os controles, caso contrário exibir o texto)

Em outras palavras, eu quero isso:

<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>

Mas eu quero uma maneira fácil de criar esta para cada campo (há muitos).

Se eu criar uma marca personalizada para gerar o texto acima (dado "algum caminho"), vão as tags personalizadas Primavera ficar ligado?

Eu acho que o que eu estou realmente perguntando é: posso criar tags personalizadas que geram tags personalizadas Spring que seguida, se obrigado? Ou será que todas as etiquetas personalizadas (mina e mola de) se tratado simultaneamente?

Foi útil?

Solução

Muitas vezes a única solução é a experimentá-lo.

Eu tentei três maneiras diferentes -. Uma biblioteca JSP tag personalizado, um parametrizado JSP incluem, e um arquivo de tag JSP2

Os dois primeiros não funcionou (embora eu suspeito que a biblioteca de tags podem ser feitas para o trabalho), mas o arquivo tag fez! A solução foi baseada frouxamente em um exemplo dado na Especialista Spring MVC e Web Flow .

Aqui está o meu código em 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>

E aqui está o código no jsp:

Em primeiro lugar, com as directivas outros taglibs:

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

e dentro do formulário:

<tag:renderConditionalControl path="someObject.someField" type="text" readOnly="${someBoolean}" className="someClass" />
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top