将值列表传递回控制器

时间:2015-03-06 18:51:25

标签: java grails groovy gsp

我有以下问题

  1. 我正在创建List<UserProfileHelper>
  2. 此列表将添加到ProfileUserCommand以发送到视图(profile.gsp)以进行渲染
  3. 如您所见,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>
    

    提前致谢!

1 个答案:

答案 0 :(得分:0)

您只需要将命令添加到控制器方法的参数中。

E.g:

class YourController {
  def submitAction(ProfileUserCommand command) {
    // do something with command
  }
}