2012-05-14 3 views
5

Czy istnieją sposoby powiązania klasy css dowolnego elementu z modelem powiązania?Spring MVC - Jak ustawić rodzicielską klasę div, gdy występują błędy sprawdzania poprawności?

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

W ten kawałek kodu potrzebne do zarządzania klasy login-error „s do control-group gdy nie ma błędów i control-group error gdy istnieją (ten sam pomysł na drugim control-group).

Jakie jest wspólne rozwiązanie?

Aktualizacja

Oto, co trzeba, gdy nie ma błędu wiążą:

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

Oto, co trzeba, gdy wystąpi błąd wiążą:

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

Szukasz rozwiązania.

+0

Czy możesz jeszcze bardziej rozwinąć swoje pytanie. Nie jestem w stanie zrozumieć twojego problemu. –

+0

@Japan Trivedi: Zaktualizowany – agibalov

+0

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

Odpowiedz

8

Oto rozwiązanie, które po prostu działa, ale nie jestem pewien, czy to naprawdę dobry pomysł:

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

To mogłoby być również miłym rozwiązaniem. Ale według mnie mieszanie kodu java w jsp jest bardzo brudne i niezalecane. Nadal dla pilnych rozwiązań tej pracy. –

+6

Możesz użyć trójskładnikowego operatora JSTL zamiast wstrzykiwać kod Java, np .: '$ {status.error? "błąd": ""} ". –

0

nie jestem w stanie znaleźć odpowiedniego (częste) rozwiązanie tutaj. Ale możesz skorzystać z JavaScript i spróbować sprawdzić, czy w widoku jest wyświetlana span z identyfikatorem "name", a na podstawie tego warunku możesz osiągnąć to, co chcesz.

Ponieważ w przypadku braku błędu powiązania dla określonego nie wygeneruje on znacznika zakresu dla tego samego. A jeśli wystąpi błąd dla "nazwa", to wygeneruje odpowiedni znacznik zakresu z jego identyfikatorem.

Mam nadzieję, że ci to pomoże. Cheeers.

2

Miałem ten sam problem i rozwiązałem go za pomocą 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>