【问题标题】:Grails countrySelect tag - default valueGrails countrySelect 标签 - 默认值
【发布时间】:2013-11-09 20:16:58
【问题描述】:

这是我的代码

<g:countrySelect name="country" value="${customerInstance?.country}"
             noSelection="['':'-Choose your country-']"/>

在显示视图中(页面) 它显示值,而不是我希望它显示选定的选项

例如, -选择你的国家- 阿富汗 阿尔巴尼亚 在上面的示例中,我希望显示页面显示选项(“阿富汗”)而不是该值(“alg”),这是我的问题,帮助我解决这个问题

【问题讨论】:

  • 我不确定你在问什么。您想在客户端或服务器端获取此值吗?您在做什么来尝试编辑所选国家/地区?
  • 我想在服务器端获取这个值,例如在一个 grails 应用程序中,我有一个名为 firstname 的字段,我将使用 create view 来创建 firstname 并使用 edit view 来编辑 firstname,而编辑该名字文本框包含我在创建时提供的值,同样在编辑组合框时它将具有我选择的值,但是使用 g:countrySelect 开发的组合框不显示我在创建期间选择的值跨度>
  • 我想要服务器端的这个值,如果你还不明白,请问我,因为这对我来说非常重要,我想立即解决这个问题,提前谢谢
  • @John:请发布您与 gCountrySelect 相关的代码
  • 这是我的代码

标签: grails


【解决方案1】:

您必须覆盖 countrySelect 标签或创建您自己的标签。

import org.codehaus.groovy.grails.plugins.web.taglib.CountryTagLib

class FormsTagLib {

static namespace = "bootstrap"

Closure countrySelect = { attrs ->
    if (!attrs.from) {
        attrs.from = CountryTagLib.COUNTRY_CODES_BY_NAME_ORDER
    }

    if (!attrs['valueMessagePrefix']) attrs.optionValue = { CountryTagLib.ISO3166_3[it] }
    attrs.optionKey = { CountryTagLib.ISO3166_3[it] }

    if (!attrs.value) {
        attrs.value = attrs.remove('default')
    }
    out << select(attrs)
}
}

并将其称为

<bootstrap:countrySelect name="country" value="${customerInstance?.country}" noSelection="['':'-Choose your country-']"/>

试试这个..,.

【讨论】:

  • 非常感谢它的工作,你能解释一下这个 taglib 代码吗
  • 但这适用于 g:countrySelect,我希望这也适用于 g:timezoneSelect,请告诉我有没有解决这个问题的 api
  • 但这适用于 g:countrySelect,我希望这也适用于 g:timezoneSelect,请告诉我有没有解决这个问题的 api
  • 这是 countrySelect 代码实现的精确副本,我只是在实现中添加了一行 attrs.optionKey = { CountryTagLib.ISO3166_3[it] }。默认在select的value属性里,原来的taglib放的是国家代码。所以我只是在标签库中添加一个选项值并在其中设置全名。
  • 对于 timezoneSelect 只需打开它的实现并复制并创建自己的并根据需要进行更改。
【解决方案2】:

你可以覆盖标签的optionKey。

例如

g:countrySelect name="country" noSelection="['':'-Choose your country-']" value="${customerInstance?.country}" optionKey="${{CountryTagLib.ISO3166_3[it]}}"

现在 optionKey 和 optionValue 将是完整的国家/地区名称。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-21
    • 2015-05-22
    • 1970-01-01
    • 2015-06-17
    • 1970-01-01
    • 2023-04-06
    • 2023-03-14
    • 2012-05-14
    相关资源
    最近更新 更多