9

私は現在 CSS を使用して、エントリを作成するときに書くすべてを大文字に変更していますが、それだけでは十分ではありません。保存すると、テキスト フィールドに表示されるテキストは大文字になりますが、Grails が格納する実際の値は小文字のままです。

コントローラーなどで何かを変更する必要があると思います。

$fieldValue CSS を変換するとうまくいくのでしょうか??

どんなアイデアでも役に立ちます!

ありがとう!

4

4 に答える 4

21

ドメイン オブジェクトのセッターを作成できますか?

class Domain {
 String aField

 void setAField( String s ){
   aField = s?.toUpperCase()
 }
}
于 2010-10-25T15:13:32.050 に答える
4

ドメイン オブジェクトの値を大文字に変更する方法を尋ねていると思います。そうでない場合は、質問を明確にしてください。

たくさんのオプションがあります。私がお勧めします

1) サービス メソッドで、保存する前に、String.toUpperCase() を使用してドメイン オブジェクトの適切な値を変更します。

また

2) ドメイン オブジェクトで beforeInsert メソッドを定義し、そこで toUpperCase を実行することで、基礎となる Hibernate インターセプターを使用できます。(grails ドキュメントの 5.5.1 を参照)

また

3)このクライアント側を実行できます。ただし、値を上限として格納することが「業務上の要件」である場合は、翻訳サーバー側で行うことをお勧めします。そのコードにテストをラップする方が簡単です....

于 2010-10-25T15:10:04.777 に答える
3

注釈を使用するのが最もクリーンなアプローチです

import org.grails.databinding.BindingFormat
class Person {
    @BindingFormat('UPPERCASE')
    String someUpperCaseString

    @BindingFormat('LOWERCASE')
    String someLowerCaseString
}

リンクは次のとおりです: Grails doc for data binding

于 2015-02-19T05:27:24.043 に答える
1

Groovy メタプログラミングを使用すると、プロパティごとにカスタム セッターを実際に記述することなく、すべてのドメイン クラスの String 型プロパティのセッターを変更できます。

これを行うには、次のようなものをinitクロージャーに追加しますBootstrap.groovy

   def init = { servletContext ->

      for (dc in grailsApplication.domainClasses) {        

         dc.class.metaClass.setProperty = { String name, value ->

            def metaProperty = delegate.class.metaClass.getMetaProperty(name)

            if (metaProperty) {

               // change the property value to uppercase if it's a String property
               if (value && metaProperty.type == String) {
                  value = value.toUpperCase()
               }

               metaProperty.setProperty(delegate, value)
            } else {
               throw new MissingPropertyException(name, delegate.class)
            }
         }
      }
   }
于 2010-10-25T16:13:35.323 に答える