g: выберите onchange с помощью rest-url - PullRequest
1 голос
/ 11 ноября 2011

Я хочу выбрать язык с тегом <g:select> и отправить параметры выбора в действие, когда выбор изменится. (Параметр должен быть виден в URL открытого вида)

Я пробовал разные варианты <g:form> и <g:select>:

  1. Версия создает правильные параметры, но не создает URL-адрес отдыха :

    <g:form name="selectLanguage"  <b>action='show' id="${mitarbeiterprofilInstance.id}" lang=lang>
     <g:select onchange="submit();"
      value="${profilInstance?.sprache?.sprache}"
      name="lang"
      optionKey="sprache"
      optionValue="sprache"
      from = "${mitarbeiterprofilInstance.profiles.sprache}" />
    </g:form>
    

    Параметры: [lang:deutsch, id:3, action:show, controller:mitarbeiterprofil]

    URL: /mitarbeiterprofil/show/3

    URL должен быть /mitarbeiterprofil/show/3/deutsch

  2. Версия добавляет параметры в URL, но с неправильным действием :

    <g:form name="selectLanguage"  id="${mitarbeiterprofilInstance.id}" lang=lang>
      <g:select onchange="submit();"
      value="${profilInstance?.sprache?.sprache}"
      name="lang"
      optionKey="sprache"
      optionValue="sprache"
      from = "${mitarbeiterprofilInstance.profiles.sprache}"  />
    </g:form>
    

    Параметры: [lang:deutsch, id:3, action:index, controller:mitarbeiterprofil]

    URL: /mitarbeiterprofil/index/3/deutsch

  3. Версия выбирает правильный контроллер, показывает параметры в URL, но не использует правильный параметр :

    <g:form name="selectLanguage"  id="${mitarbeiterprofilInstance.id}" lang=lang>
      <g:select onchange="submit(<b>action='show');"
      value="${profilInstance?.sprache?.sprache}"
      name="lang"
      optionKey="sprache"
      optionValue="sprache"
      from = "${mitarbeiterprofilInstance.profiles.sprache}"  />
    </g:form>
    

    Титулы: [lang:show, id:3, action:show, controller:mitarbeiterprofil]

    URL: /mitarbeiterprofil/show/3/show

У кого-нибудь еще есть идеи, как мне поступить?

1 Ответ

0 голосов
/ 11 ноября 2011

Вы должны играть здесь с UrlMappings.groovy

Во-первых, давайте настроим вашу форму:

<g:form name="selectLanguage" action='show' id="${mitarbeiterprofilInstance.id}" >
 <g:select onchange="submit();"
  value="${profilInstance?.sprache?.sprache}"
  name="lang"
  optionKey="sprache"
  optionValue="sprache"
  from = "${mitarbeiterprofilInstance.profiles.sprache}" />
</g:form>

И отображение:

"/mitarbeiterprofil/show/$id/$lang" (controller:"mitarbeiterprofil", action:"show")

Это может решить вашу проблему, но я сомневаюсь ... Так что попробуйте и сообщите нам результат:)

PS Проблема здесь в процессе рендеринга.URL вашего действия будет создан до того, как пользователь выберет язык.Таким образом, вы должны обновлять URL каждый раз, когда пользователь выбирает язык, или это будет приводить к URL, например: / mitarbeiterprofil / show / 3? Lang = ru

...