Frage

Ich habe eine JSP, die Feder verwendet. Formular-Tags steuern auf einen Befehl Objekt zu binden

Ich möchte es wie folgt ändern: if [eine Bedingung wahr ist] als die Steuerelemente angezeigt werden; andernfalls nur den Text anzuzeigen. (Beispiele:.., Wenn der Benutzer ein Admin ist, die Steuerelemente angezeigt werden, sonst nur den Text anzuzeigen Wenn die whatsit zur Modifizierung noch offen sind, die Steuerelemente angezeigt werden, da sonst den Text angezeigt werden)

Mit anderen Worten, ich möchte dies:

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

Aber ich mag eine einfache Möglichkeit, dies für jedes Feld zu schaffen (es gibt viele).

Wenn ich einen benutzerdefinierten Tag erstellen Sie den obigen Text (gegeben „SOME PATH“) zu erzeugen, werden die Feder benutzerdefinierten Tags gebunden werden?

Ich denke, was ich wirklich bin gefragt ist: kann ich benutzerdefinierte Tags erstellen, die Frühling benutzerdefinierte Tags erzeugen, die und gebunden werden? Oder alle benutzerdefinierten Tags (Mine und Spring) gleichzeitig behandelt werden?

War es hilfreich?

Lösung

Häufig ist die einzige Lösung ist, es zu versuchen.

Ich versuchte es drei verschiedene Arten - a. JSP-Tag-Bibliothek, eine parametrisierte JSP umfasst und eine JSP2 Tag-Datei

Die ersten beide funktionieren nicht (obwohl ich die Tag-Bibliothek vermuten kann arbeiten gemacht werden), aber die Tag-Datei hat! Die Lösung wurde auf Basis lose auf einem Beispiel in Expert Spring MVC und Web Flow .

Hier ist mein Code in 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>

Und hier ist der Code in der jsp:

Zuerst mit den anderen Taglibs Richtlinien:

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

und in der Form:

<tag:renderConditionalControl path="someObject.someField" type="text" readOnly="${someBoolean}" className="someClass" />
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top