2012-05-14 1 views
5

任意の要素のcssクラスをモデルのバインド状態にバインドする方法はありますか?コードのこの部分でSpring MVC - 検証エラーが発生した場合、親divのクラスを設定するには?

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

Iは、(第2 control-groupについて同じ考え方)があるエラーとcontrol-group errorがない場合control-grouplogin-errorのクラスを管理する必要があります。

ここでよくある解決策は何ですか?

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

解決策を探して:

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

は、ここで私はバインドエラーが発生した場合に必要なものです:

更新

は、ここで私は何のバインドエラーがないとき、必要なものです。

+0

あなたの質問をさらに詳しくお聞かせください。私はあなたの問題を理解することができません。 –

+0

@Japan Trivedi: – agibalov

+0

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

答えて

8

ここだけの作品解決策だが、私はそれが本当に良いアイデアだかはわからない:

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

これは素晴らしい解決策でもあります。しかし、私によれば、jspでJavaコードを混ぜることは非常に汚いので推奨されません。まだ緊急の解決のために、この作品。 –

+6

Javaコードを挿入するのではなく、JSTLの三項演算子を使用できます(例: '$ {status.error? 'error': ''} '。 –

0

は、私がここに適切な(共通)解決策を見つけることができないのです。しかし、あなたはJavaScriptを使って、 "name"というIDを持つビューにレンダリングされたスパンがあるかどうかを調べることができます。この条件に基づいて、あなたが望むものを達成することができます。

指定されたのバインドエラーがないと、そのためのスパンタグは生成されないためです。また、 "name"にエラーがある場合、そのidでそれぞれのspanタグを生成します。

ご希望の場合はこちらをご覧ください。 チアーズ。

2

私は同じ問題を抱えていて、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> 
関連する問題