2

ここに画像の説明を入力してくださいオプションを記述してHTML選択に生成できるようにするにはどうすればよいですか?これに伴う問題は、「オプション」には配列ではなくセットが必要なことです

これが私が持っているすべてです。命名規則が悪いことはわかっているので、修正しますが、今のところ、この問題に何日も取り組んでいます。

コントローラクラス

import org.springframework.dao.DataIntegrityViolationException
import grails.plugin.mail.*

class EmailServiceController {

    static defaultAction = "contactService"

def contactService() {
    def options = new ArrayList()
    options.push("Qestions about service")
    options.push("Feedback on performed service")
    options.push("Other")
    options.push("Why am I doing this")
    options
}

    def send() {
        sendMail(){
            to "mygroovytest@gmail.com"
            from params.email
            subject params.subject
            body params.information
        }
    }
}

ドメインクラス

class EmailService {

    static constraints = {
    }
}

g:gspから呼び出しを選択します

<g:select name = "subject" from = "${options}" noSelection="Topic"/>

また、「${options}」の代わりに「${selectOptions}」を使用して次のことを試しましたが、運がありませんでした

def selectOptions() {
    def options = new ArrayList()
    options.push("Qestions about service": "QAS")
    options.push("Feedback on performed service":"FoPS")
    options.push("Other":"Other")
    options.push("Why am I doing this":"WHY")
    return options
}
4

3 に答える 3

6

わかりました、私はここで何が起こっているのか知っているかもしれないと思います。質問に欠けている部分は、gspが何と呼ばれているのかということです。適切な方法は次のとおりです。

class EmailServiceController {

  def contactService() {
    def options = ["Qestions about service", "Feedback on performed service", "Other"]
    // assumes you are going to render contactService.gsp
    // you have to push the options to the view in the request
    [options:options]
  }

}

そして、contactService.gspに次のようになります。

<g:select name="subject" from="${options}" noSelection="['Topic': 'Topic']"/>
于 2013-02-14T02:16:03.930 に答える
3

あなたoptionsは配列でもマップでもありません。構文エラーがあります。そのため、選択したオプションは 1 つしかありません。次のように、実際のリストまたはマップを入力する必要があります。

def selectOptions() {
    def options = [:]
    options["Qestions about service"] = "QAS"
    options["Feedback on performed service"] = "FoPS"
    [options:options]
}

マップを使用すると、次のようにビューで使用できます。

<g:select name="subject" from="${options.entrySet()}" 
    optionValue="key" optionKey="value"
    noSelection="['Topic': 'Topic']"/>
于 2013-02-14T00:06:56.307 に答える
0

タグでは、一重引用符ではなく二重引用符を使用する必要があります。'${options}'一重引用符を使用すると、の値を持つ GString を渡す代わりに、次のような文字列を渡すだけですoptions

<g:select name="subject" from="${options}" noSelection="Topic"/>

さらに、アクションを呼び出すと仮定すると、を返す代わりにcontactService必要があります。はブール値を返します。これは、 の暗黙的な戻り値が の代わりにのブール値の結果であることを意味します。return optionsoptions.push("Other")push()contactServicepush()options

于 2013-02-13T22:59:59.550 に答える