Grails form submit generating blank entry at "params"

I have this form and when the user types something this is submitted as finalAnswer, as you can see below:

        <g:form controller="animais" params="['rootNode': rootNode, 'finalAnswer': finalAnswer]">   
            <h3>${curQuestion} </h3>            

            <g:if test="${finished}">           
                <g:actionSubmit class="btn btn-primary" action="backToStart" value="Voltar" />
            </g:if>         
            <g:if test="${!finished}">
                <g:if test="${!showDivTip}">            
                    <g:textField name="finalAnswer" value="${finalAnswer}"/>
                    <g:actionSubmit class="btn btn-primary" action="submitFinalAnswer" value="OK" />                    
                </g:if>                             
                <g:if test="${showDivTip}">         
                    <g:textField name="tipToFinalAnswer" value="${tipText}"/>                   
                    <g:actionSubmit class="btn btn-primary" action="submitTipForAnswer" value="Finalizar" />                        
                </g:if>
            </g:if>
        </g:form>

The problem is that finalAnswer come to params as a 2-sized array of strings, even if the content is a simple string.

When I printed params:

[finalAnswer:[, leao marinho], rootNode:2, _action_submitFinalAnswer:OK, action:index, format:null, controller:animais]

Value of params.finalAnswer: [, leao marinho]

ClassType of params.finalAnswer: class [Ljava.lang.String;

How can I retrieve params.finalAnswer as a simple string?

Upvotes: 0

Views: 363

Answers (2)

Koloritnij
Koloritnij

Reputation: 1217

Answer by @quindimildev not fully right. Better will be use hidden field:

 <g:form controller="animais">   
  <g:hiddenField name="rootNode" value="${rootNode}"/>
  <g:hiddenField name="finalAnswer" value="${finalAnswer}"/>
        <h3>${curQuestion} </h3>            

        <g:if test="${finished}">           
            <g:actionSubmit class="btn btn-primary" action="backToStart" value="Voltar" />
        </g:if>         
        <g:if test="${!finished}">
            <g:if test="${!showDivTip}">            
                <g:textField name="finalAnswer" value="${finalAnswer}"/>
                <g:actionSubmit class="btn btn-primary" action="submitFinalAnswer" value="OK" />                    
            </g:if>                             
            <g:if test="${showDivTip}">         
                <g:textField name="tipToFinalAnswer" value="${tipText}"/>                   
                <g:actionSubmit class="btn btn-primary" action="submitTipForAnswer" value="Finalizar" />                        
            </g:if>
        </g:if>
    </g:form>

So you can remove it from params. Really, it more clear.

Upvotes: 1

quindimildev
quindimildev

Reputation: 1280

Try this

    <g:form controller="animais" params="['rootNode': rootNode]">   
        <h3>${curQuestion} </h3>            

        <g:if test="${finished}">           
            <g:actionSubmit class="btn btn-primary" action="backToStart" value="Voltar" />
        </g:if>         
        <g:if test="${!finished}">
            <g:if test="${!showDivTip}">            
                <g:textField name="finalAnswer" value="${params.finalAnswer}"/>
                <g:actionSubmit class="btn btn-primary" action="submitFinalAnswer" value="OK" />                    
            </g:if>                             
            <g:if test="${showDivTip}">         
                <g:textField name="tipToFinalAnswer" value="${params.tipText}"/>                   
                <g:actionSubmit class="btn btn-primary" action="submitTipForAnswer" value="Finalizar" />                        
            </g:if>
        </g:if>
    </g:form>

Upvotes: 1

Related Questions