5

私は成功せずにこれをやろうとしています:

<g:textField title="${title}" ${disabled} />

${disabled} 変数が TRUE の場合にのみ、無効な属性を適用したいと考えています。他のビューでは多くのコードを取得し、IF ステートメントを使用すると混乱するため、条件を使用したくありません。

もう 1 つは、次のように属性を適用することです。

<g:textField title="${title}" disabled="${disabled}" />

しかし、無効な属性を配置すると、変数の内容はわかりません。常にフィールドが無効になります。

4

2 に答える 2

8

gotomannersのソリューションが気に入らない場合(これは私には完全に有効だと思われます)

<g:textField title="${title}" ${(disabled)?"disabled":""} />
于 2011-05-19T21:01:25.030 に答える
7

${disabled}変数は、それが機能するために TRUE ではなく「無効」を返す必要があります。

編集

これを試してみたところ、値に関係なく常に無効になっているという問題がありました。どうやら disabled キーワードが存在するだけでフィールドが無効になり、そのキーワードに割り当てられた値はダミー値にすぎません。

とにかく、ここに修正があります。

  • Taglib クラスを作成します (まだ持っていない場合)。
  • 独自のテキストフィールドタグをそのように定義します...

    def myTextField = { attrs, body ->
      def title = attrs.remove("title")
      def isDisabled = attrs.remove("disabled")
    
      if ("true".equals(isDisabled)) {
        out << """<input title="${title}" disabled="${isDisabled}" """
        attrs.each { k,v ->
            out << k << "=\"" << v << "\" "
          }
        out << "/>"
      } else {
        out << """<input title="${title}" """
        attrs.each { k,v ->
            out << k << "=\"" << v << "\" "
          }
        out << "/>" 
      }
    }
    
  • gspで、テキストフィールドタグを次のように呼び出します

    <g:myTextField title="${title}" disabled="${disabled}" />
    
  • そのような追加の属性を追加することも有効です

    <g:myTextField class="title" name="theName" value="theValue" title="${title}" disabled="${disabled}" />
    
  • 今度は${disabled}変数が文字列として「true」または「false」を返すことを確認してください。

于 2011-05-19T16:57:05.937 に答える