2013-07-31 2 views
0

Это мой кодGrails countrySelect тег - значение по умолчанию

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

В шоу-представлении (страницы) Он отображает значение, вместо того, что я хочу, чтобы отобразить выбранный параметр

, например, -Выберите на стране Афганистан Албании здесь, в приведенном выше примере я хочу шоу страницы, чтобы отобразить опцию («Афганистан») вместо этого значения («ALG»), это мой вопрос поможет мне об этой проблеме

+0

Я не уверен, что вы просите. Вы хотите получить это значение на стороне клиента или на стороне сервера? Что вы делаете, чтобы попытаться отредактировать выбранную страну? –

+0

Я хочу получить это значение на стороне сервера, например, в приложении grails. У меня есть поле с именем firstname. Я буду использовать представление create для создания первого имени и редактирования вида для редактирования первого имени, а редактирование этого первого текстового поля состоит из значение, которое я предоставил при создании, также при редактировании поля со списком оно будет иметь значение, которое я выбираю, но поле со списком, разработанное с использованием g: countrySelect, не показывает значение, которое я выбрал при создании – John

+0

. Я хочу это значение на стороне сервера , пожалуйста, спросите меня, если вы еще не поняли, потому что это очень важный вопрос для меня, я хочу решить это немедленно, спасибо заранее – John

ответ

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-']"/> 

Попробуйте это ..,.

+0

благодарит много за его работу, пожалуйста, объясните этот код taglib – John

+0

Но это будет работать для g: countrySelect, я хочу, чтобы это работало для g: timezoneВыберите также, пожалуйста, скажите, есть ли какие-либо api для решения этой проблемы – John

+0

Но это будет работать для g: countrySelect, я хочу, чтобы это работало для g: timezoneВыберите также, пожалуйста, скажите мне, есть ли какие-либо api для решения этой проблемы. – John

0

Вы можете переопределить опциюKey тега.

например

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

Теперь optionKey и OptionValue будет полное название страны.

Смежные вопросы