1

私はこれ<g:select>.gspファイルに入れています。しかし、通常の とは異なり、これは特定の条件が満たされた場合<g:select>に属性を持ちます。disabled=""

コードに従う:

<g:select name="test" 
          from="${["foo1","foo2"]}" 
          <g:if test="${true}">disabled=""</g:if> />

エラーが返されました:Grails tag [g:select] was not closed

しかし、これを次のように変更すると:

<g:select name="test" 
          from="${["mu1","mu2","mu3"]}" 
          ${ if(true) { println "disabled=\"\"" } }/>

次のエラーが返されました。Attribute value must be quoted.

エラーメッセージは両方とも例外の下にあり、org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException

問題は、これを機能させるにはどうすればよいかということです。カスタム TagLib を使用せずに可能な答えはありますか?

4

3 に答える 3

2

GSP フォーム フィールド タグdisabledはブール プロパティとして扱われるため、次のように言えます。

<g:select .... disabled="${true}" />

一般に、通常の Groovy-true ルールの下では任意の式を使用できるはずですが、文字列 "true" および "false" については特別なケースになると思います (後者は通常、trueGroovy-true ルールの下では非と見なされます)。空の文字列)。疑問がある場合は、いつでも言うことができます

disabled="${(someExpression) as boolean}"
于 2012-09-20T08:19:30.320 に答える
1

printlnを使用する必要はありません。これを試してください

<g:select .... ${(conditional)?"disabled":""} ... />
于 2012-09-20T07:58:37.943 に答える
1
    <g:select disabled="${true}"...

は問題ありませんが、送信時に必須フィールドの場合、値は送信されないため、送信ボタンを押すときにこの jQuery コードを使用してフィールドを有効にします。

    $(function() {

        $('form').on('submit', function() {
            $(this).find(':disabled').removeAttr('disabled');
        });

    });
于 2013-01-25T07:40:12.933 に答える