2015-03-06 4 views
0

У меня есть следующая проблемаПередача списка значений обратно в контроллер

  1. Я создаю List<UserProfileHelper> значений
  2. Этот список добавляется к ProfileUserCommand для отправки в представлении (profile.gsp) для рендеринга

Как вы можете видеть, объект ProfileUserCommand включает в себя 2 булевских значения, предназначенных для управления статусом флажков в GSP. Эта часть работает отлично, так как я вижу, что GSP отображается правильно, и с флажками, правильно отмеченными/немаркированными.

При отправке формы обратно контроллеру я не знаю, как «перестроить» этот список с обновленными значениями из GSP, поэтому я могу получить обновленные данные List<UserProfileHelper>.

Это мои классы

UserProfileHelper.groovy

class UserProfileHelper { 

    Long optionId 
    String optionName 
    boolean isSubMenu 
    boolean hasAccess 
    boolean canWrite 

} 

ProfileUserCommand.groovy

class ProfileUserCommand { 

    String username 
    List userProfile = [].withLazyDefault { return new UserProfileHelper() } 

    static constraints = { 
     username blank: false 
     userProfile blank: true, nullable: true 
     access blank: true, nullable: true 
    } 
} 

profile.gsp (только соответствующий раздел GSP)

<g:each in="${command.userProfile}" var="option"> 
    <tr> 
     <td> 
      ${option.optionId} 
     </td> 
     <td> 
      <g:if test="${!option.isSubMenu}"> 
       ${option.optionName} 
      </g:if> 
      <g:else> 
       &nbsp; 
      </g:else> 
     </td> 
     <td> 
      <g:if test="${option.isSubMenu}"> 
       ${option.optionName} 
      </g:if> 
      <g:else> 
       &nbsp; 
      </g:else> 
     </td> 
     <td> 
      <g:checkBox bean="${option}" name="access" value="${option.hasAccess}"/> 
     </td> 
     <td> 
      <g:checkBox bean="${option}" name="write" value="${option.canWrite}"/> 
     </td> 
    </tr> 
</g:each> 

Заранее благодарен!

ответ

0

Вам просто нужно добавить команду к параметрам вашего метода контроллера.

т.д .:

class YourController { 
    def submitAction(ProfileUserCommand command) { 
    // do something with command 
    } 
} 
Смежные вопросы