5

任意の要素の css クラスをモデルのバインド状態にバインドする方法はありますか?

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

このコードでは、エラーがない場合とエラーがある場合にlogin-errorのクラスを管理する必要があります ( second についても同じ考えです)。control-groupcontrol-group errorcontrol-group

ここでの一般的な解決策は何ですか?

アップデート

バインドエラーがない場合に必要なものは次のとおりです。

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

バインドエラーが発生したときに必要なものは次のとおりです。

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

解決策を探しています。

4

3 に答える 3

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>
于 2012-05-14T06:40:30.590 に答える
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>
于 2012-08-06T09:39:25.233 に答える
0

ここで適切な(一般的な)解決策を見つけることができません。ただし、JavaScript を使用して、id "name" でビューにレンダリングされたスパンがあるかどうかを調べてみることができます。この条件に基づいて、目的を達成できます。

指定のバインドエラーがない場合同じものに対してスパンタグを生成しません。また、「名前」にエラーがある場合は、ID を持つそれぞれのスパン タグが生成されます。

これがお役に立てば幸いです。乾杯。

于 2012-05-14T06:41:52.307 に答える