1
votes

I am trying to pass in some values from view to controller from grails. Here is my code which tries to do this:

<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>

Among others, the main part which is important is this 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>

Here we can see some hidden fields(for difference1 and calculatedAmount)

The thing whats strange is that when I submit the form, the fields difference and calculatedAmount are not found in params in controller. Thats why I had to create a new hidden field with names difference1 and calculatedAmount1

I was wondering why and could not find a solution anywhere. I am using grails 2.3.7.

1

1 Answers

3
votes

I don't think disabled fields are supposed to be submitted with the request. Maybe what you really want is readonly instead of disabled.