2016-03-24 5 views
1

私はFormTagLibを拡張しているので、利用可能なフォームタグの改良版を実装しようとしています。私は、textFieldタグで単純なテストを行うtryignですが、どのメソッドがタグに呼び出されているか把握できないようです。私は、利用可能なすべての利用可能textFieldメソッドをオーバーライドしていますが、それらのどれも、私は、各メソッドのブレークポイント、コンソール出力を入れて試してみましたが、何も起こりませんGrails:FormTagLibを拡張するには?

class TestTagLib extends FormTagLib { 
static namespace = "test" 

@Override 
Object textField(Map attrs) { 
    return super.textField(attrs) 
} 

@Override 
Object textField() { 
    return super.textField() 
} 

@Override 
Object textField(Map attrs, CharSequence body) { 
    return super.textField(attrs, body) 
} 

@Override 
Object textField(Closure body) { 
    return super.textField(body) 
} 

@Override 
Object textField(Map attrs, Closure body) { 
    return super.textField(attrs, body) 
} 
} 

を打っていない得ています。入力フィールドはうまく生成されていますが、それを行うために自分のコードを使用しているようではありません。ヘック私はスーパークラスの呼び出しを完全に削除しようとしましたが、すべてがまだ動作します。

<test:textField name="test"/> 
<input type="text" name="test" value="" id="test" /> 

私はここで何が不足していると私は私の修正を行うことができますので、どのように私は、テキストフィールドの作成を傍受するのですか?

答えて

0

あなたはFormTagLibが実装されている方法を見て撮影したことがありますか?

私はほとんどのタグがtextField = { … }のように、クロージャとして定義されていると思います。これにより、は、{}の間のコードに置き換えられます。textFieldメソッドの実装は、{}の間のコードに置き換えられます。

私はあなたの例では、延長のリスクのデモンストレーションであると考えています。私は代表団が通常より良い解決策だと思う。 tagLibsがSpring Beanであるかどうかは不明ですが、このような(試していない)試してみてください:

class TestTagLib { 
    def formTagLib 

    def textField(args) { 
     formTagLib.textField(args) 
    } 
} 
関連する問題