java - 在 Controller 中找不到 Grails 输入字段参数

标签 java spring grails model-view-controller

我正在尝试将一些值从 Grails 的 View 传递到 Controller 。这是我尝试执行此操作的代码:

<g:form controller="renter" action="processpayment">
    <div style="margin:0 auto;width:100%">
        <input type="checkbox" id="toggle"/>
        <label for="toggle">Toggle</label>
        <label for="allInputAmount">All Input Amount</label>
        <g:textField name="allInputAmount" value="${0}" type="number"/>
        <label for="difference">Difference</label>
        <input id="difference1" name="difference1" type="hidden" value="${calculatedAmount}"/>
        <g:textField name="difference" type="number" value="${calculatedAmount}" disabled="true"/>
        <label for="calculatedAmount">Calculated Amount</label>
        <input name="calculatedAmount1" type="hidden" value="${calculatedAmount}"/>
        <g:textField name="calculatedAmount" value="${calculatedAmount}" type="text" disabled="true"/>
        <hr/>
    </div>


    <div style="margin:0 auto;width:100%;clear:both">

        <div style="width:25%;float:left">
            <g:each var="renter" in="${renters}">
                <g:if test="${renter.name.startsWith("A")}">
                    <g:checkBox class="checkbox" name="${renter.name}" value="${false}"
                                checked="false">${renter.name}</g:checkBox>
                    <label for="${renter.name}">${renter.name}</label>
                    <br/>
                </g:if>
            </g:each>
        </div>

        <div style="width:25%;float:left">
            <g:each var="renter" in="${renters}">
                <g:if test="${renter.name.startsWith("B")}">
                    <g:checkBox class="checkbox" name="${renter.name}" value="${false}"
                                checked="false">${renter.name}</g:checkBox>
                    <label for="${renter.name}">${renter.name}</label>
                    <br/>
                </g:if>
            </g:each>
        </div>

        <div style="width:25%;float:left">
            <g:each var="renter" in="${renters}">
                <g:if test="${renter.name.startsWith("C")}">
                    <g:checkBox class="checkbox" name="${renter.name}" value="${false}"
                                checked="false">${renter.name}</g:checkBox>
                    <label for="${renter.name}">${renter.name}</label>
                    <br/>
                </g:if>
            </g:each>
        </div>

        <div style="width:25%;float:left">
            <g:each var="renter" in="${renters}">
                <g:if test="${renter.name.startsWith("D")}">
                    <g:checkBox class="checkbox" name="${renter.name}" value="${false}"
                                checked="false">${renter.name}</g:checkBox>
                    <label for="${renter.name}">${renter.name}</label>
                    <br/>
                </g:if>
            </g:each>
        </div>
        <g:actionSubmit value="submit" controller="renter" action="processpayment"/>

    </div>
</g:form>

除其他外,重要的主要部分是这个 div:

<div style="margin:0 auto;width:100%">
        <input type="checkbox" id="toggle"/>
        <label for="toggle">Toggle</label>
        <label for="allInputAmount">All Input Amount</label>
        <g:textField name="allInputAmount" value="${0}" type="number"/>
        <label for="difference">Difference</label>
        <input id="difference1" name="difference1" type="hidden" value="${calculatedAmount}"/>
        <g:textField name="difference" type="number" value="${calculatedAmount}" disabled="true"/>
        <label for="calculatedAmount">Calculated Amount</label>
        <input name="calculatedAmount1" type="hidden" value="${calculatedAmount}"/>
        <g:textField name="calculatedAmount" value="${calculatedAmount}" type="text" disabled="true"/>
        <hr/>
    </div>

在这里我们可以看到一些隐藏字段(difference1 和 calculatedAmount)

奇怪的是,当我提交表单时,在 Controller 的参数中找不到字段 difference 和 calculatedAmount。这就是为什么我必须创建一个名为 difference1 和 calculatedAmount1 的新隐藏字段的原因

我想知道为什么并且无法在任何地方找到解决方案。我正在使用 grails 2.3.7。

最佳答案

我认为禁用字段不应该与请求一起提交。也许您真正想要的是只读而不是禁用。

关于java - 在 Controller 中找不到 Grails 输入字段参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28673801/

相关文章:

grails - 检查 View 中变量是否为空

grails - Grails的KahaDb属性

java - 如何按标识符或主键的顺序加载多个 Hibernate 实体

java - Web 应用程序 : Parallel changes of data in repository

Spring security OAuth2 - 如何禁用访问 token 过期?

Spring Boot 在 SpringApplication.run 之前检查属性

java - 使用带有 OpenID Connect 提供程序的 spring-security-oauth2 客户端时如何访问 "id_token"和 "refresh_token"?

java - Android 使用 Java 和 REST 连接到 MySQL

java - 枚举和 AspectJ - getEnumConstants() 返回 null

grails - 关于Grails GSP