2012-05-14 7 views
5

Gibt es Möglichkeiten, die CSS-Klasse eines beliebigen Elements an den Modellbindungszustand zu binden?Spring MVC - Wie wird die Klasse der Eltern-Divs festgelegt, wenn Validierungsfehler auftreten?

<form:form method="post" commandName="authForm" action="authenticate"> 
    <div id="login-error" class="control-group"> 
    <label>Login</label> 
    <form:input path="name" /> 
    <span class="help-inline"><form:errors path="name" /></span> 
    </div> 

    <div class="control-group"> 
    <label>Password</label> 
    <form:input path="password" /> 
    <span class="help-inline"><form:errors path="password" /></span> 
    </div> 

    <input type="submit" /> 
</form:form> 

In diesem Stück Code Ich brauche login-error ‚s Klasse control-group zu verwalten, wenn es keine Fehler und control-group error ist, wenn (die gleiche Idee für die zweiten control-group) ist.

Was ist die gemeinsame Lösung hier?

aktualisieren

Hier ist, was ich brauche, wenn es Fehler nicht binden ist:

<div class="control-group"> <!-- !!!!!!!!!!!! --> 
    <label>Login</label> 
    <form:input path="name" /> 
    <span class="help-inline"><form:errors path="name" /></span> 
</div> 

Hier ist, was ich brauche, wenn es einen bind Fehler ist:

<div class="control-group error"> <!-- !!!!!!!!!!!! --> 
    <label>Login</label> 
    <form:input path="name" /> 
    <span class="help-inline"><form:errors path="name" /></span> 
</div> 

für Lösung.

+0

Können Sie bitte mehr Ihre Frage ausarbeiten. Ich kann dein Problem nicht verstehen. –

+0

@Japan Trivedi: Aktualisiert – agibalov

+0

http://stackoverflow.com/questions/1653438/spring-forms-how-to-check-for-error-on-specific-path –

Antwort

8

Hier ist die Lösung, die nur funktioniert, aber ich bin mir nicht sicher, ob es wirklich eine gute Idee ist:

<%@taglib prefix="spring" uri="http://www.springframework.org/tags"%> 
... 
<form:form method="post" commandName="authForm" action="authenticate"> 
    <spring:bind path="name"> 
    <div class="control-group <%= status.isError() ? "error" : "" %>" 
     <label>Login</label> 
     <form:input path="name" /> 
     <form:errors path="name" cssClass="help-inline" /> 
    </div>  
    </spring:bind> 
    ... 
</form:form> 
+0

Dies könnte auch die nette Lösung sein. Aber meiner Meinung nach ist das Mischen des Java-Codes in JSP sehr dreckig und nicht zu empfehlen. Dies gilt auch für dringende Lösungen. –

+6

Sie können den ternären Operator von JSTL anstelle von Java-Code verwenden, z. B .: '$ {status.error? 'Fehler': ''} '. –

0

ich nicht in der Lage bin hier eine richtige (gemeinsame) Lösung zu finden. Aber Sie können mit JavaScript gehen und versuchen zu finden, ob es einen Bereich gibt, der in der Ansicht mit der ID "name" gerendert wurde oder nicht, und basierend auf dieser Bedingung können Sie erreichen, was Sie wollen.

Wenn kein Bindungsfehler für die angegebene vorliegt, wird das span-Tag für dasselbe nicht generiert. Und wenn es einen Fehler für "Name" gibt, wird es das entsprechende Span-Tag mit seiner ID erzeugen.

Ich hoffe, dies hilft Ihnen. Cheeers.

2

Ich hatte das gleiche Problem und löste es mit jQuery.

<div class="control-group"> 
    <form:label path="groupCode" cssClass="control-label"><spring:message code="lookUp.groupCode"/></form:label> 
    <div class="controls"> 
     <form:input path="groupCode"/> 
     <form:errors path="groupCode"> 
      <form:errors path="groupCode" cssClass="help-inline"/> 
      <script type="text/javascript"> 
       $("#groupCode").parent().parent().addClass("error"); 
      </script> 
     </form:errors> 
    </div> 
</div>