Forms 一种简单的Grails形式。我不知所措

Forms 一种简单的Grails形式。我不知所措,forms,grails,Forms,Grails,在开始之前,我会说我的背景是图形设计,几年来我一直在做JavaScript。好的,我一直在寻找一个简单的教程,介绍如何创建一个带有控制器的基本表单,它在电子邮件正文中发送表单信息 这就是我的普惠制: <g:form name="batchform" url="[action:'forminfo', controller:'onboardingform'] /> <label>Application Group or Area</label> <g:t

在开始之前,我会说我的背景是图形设计,几年来我一直在做JavaScript。好的,我一直在寻找一个简单的教程,介绍如何创建一个带有控制器的基本表单,它在电子邮件正文中发送表单信息

这就是我的普惠制:

<g:form name="batchform"   url="[action:'forminfo', controller:'onboardingform'] />
<label>Application Group or Area</label>
<g:textField name="apparea01" type="text" placeholder="Place Holder Text Field 1" value='${params.apparea01}' />
<label>Department Name</label>
<g:textField  name="deptname02" type="text" placeholder="Place Holder Text Field 2" value='${params.deptname02}' />

<input type="submit" value="Submit Form" id="FormButton" >
<g:form>
我目前没有设置域,因为没有数据库连接到此站点。我只需要将这些字段输入推到电子邮件正文中。我意识到这可能是一个我没有意识到的非常基本的操作。我的背景是美术,而不是计算机科学

MailTools已配置为默认邮箱。表单需要发送到另一个电子邮件地址。 MetricLogger在登录页面时捕获用户信息


提前谢谢。这些知识将使我在成为一名艺术家/程序员的过程中大开眼界:

好的,我在年发明了这个控制器

grails应用程序/controllers/test/OnboardingformController.groovy:

此GSP grails应用程序/onboardingform/onboardingform.GSP:

以及:

<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main"/>
        <title>Onboarding</title>
    </head>
    <body>
        <g:hasErrors bean="${data}">
            <g:renderErrors bean="${data}" as="list" />
        </g:hasErrors>
        <g:form action="formSubmission">
            <fieldset>
                <p class="prop ${hasErrors(bean:data, field:'apparea01', 'errors')}">
                    <label>Application Group or Area</label>
                    <g:textField name="apparea01" type="text" placeholder="Place Holder Text Field 1" value='${data?.apparea01}' />
                </p>
                <p class="prop ${hasErrors(bean:data, field:'deptname02', 'errors')}">
                    <label>Department Name</label>
                    <g:textField name="deptname02" type="text" placeholder="Place Holder Text Field 2" value='${data?.deptname02}' />
                </p>
                <p class="prop ${hasErrors(bean:data, field:'email', 'errors')}">
                    <label>Email</label>
                    <g:textField name="email" type="text" placeholder="Place Holder Text Field 3" value='${data?.email}' />
                </p>
                <p>
                    <input type="submit" value="Submit Form" id="FormButton" >
                </p>
            </fieldset>
        </g:form>
    </body>
</html>

显然,这可能会更漂亮,但对于这个快速的示例来说就足够了

似乎您混合了控制器、服务和域的概念。它应该是三个独立的类。另外,现在不要认为你真的需要package.com,它不能从点开始,只要把你的控制器放到域和服务的控制器目录中就行了,谢谢。我要试试这个。你太棒了!蒂姆,是的,我可以让表单将参数写入控制台,这样表单就可以工作了。谢谢你的邀请。现在,我的客户在通过电子邮件发送表单时遇到了一个问题。所以,我已经成功了一半!
package test

class OnboardingformController {

    def index() { 
        render( view: 'onboardingForm.gsp' )
    }

    def formSubmission( String apparea01, String deptname02, String email ) {
        println "Send Mail from $email to me@email.com with apparea01=$apparea01 and deptname02=$deptname02"
        /*
        // Commented out for now so I don't have to set up mail ;-)
        sendMail {
            to 'me@email.com'
            cc params.mail
            subject 'I am the form test in the subjectline'
            body 'i am the body of the form. I should have vars here that display the user input from form fields'
        }
        */
        redirect( action:'index' )
    }
}
<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main"/>
        <title>Onboarding</title>
    </head>
    <body>
        <g:form action="formSubmission">
            <p>
                <label>Application Group or Area</label>
                <g:textField name="apparea01" type="text" placeholder="Place Holder Text Field 1" value='${params.apparea01}' />
            </p>
            <p>
                <label>Department Name</label>
                <g:textField name="deptname02" type="text" placeholder="Place Holder Text Field 2" value='${params.deptname02}' />
            </p>
            <p>
                <label>Email</label>
                <g:textField name="email" type="text" placeholder="Place Holder Text Field 3" value='${params.email}' />
            </p>
            <p>
                <input type="submit" value="Submit Form" id="FormButton" >
            </p>
        </g:form>
    </body>
</html>
package test

class OnboardingformController {

    def index() { 
        render( view: 'onboardingForm.gsp' )
    }

    def formSubmission( SubmissionCommandObject cmd ) {
        if( !cmd.validate() ) {
            render( view: 'onboardingForm.gsp', model:[ data: cmd ] )
            return
        }
        else {
            println "Send Mail from $cmd.email to me@email.com with apparea01=$cmd.apparea01 and deptname02=$cmd.deptname02"
        }
        redirect( action:'index' )
    }

}

class SubmissionCommandObject {
    String apparea01
    String deptname02
    String email

    static constraints = {
        apparea01 blank: false, nullable: false
        deptname02 blank: false, nullable: false
        email blank: false, email: true
    }
}
<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main"/>
        <title>Onboarding</title>
    </head>
    <body>
        <g:hasErrors bean="${data}">
            <g:renderErrors bean="${data}" as="list" />
        </g:hasErrors>
        <g:form action="formSubmission">
            <fieldset>
                <p class="prop ${hasErrors(bean:data, field:'apparea01', 'errors')}">
                    <label>Application Group or Area</label>
                    <g:textField name="apparea01" type="text" placeholder="Place Holder Text Field 1" value='${data?.apparea01}' />
                </p>
                <p class="prop ${hasErrors(bean:data, field:'deptname02', 'errors')}">
                    <label>Department Name</label>
                    <g:textField name="deptname02" type="text" placeholder="Place Holder Text Field 2" value='${data?.deptname02}' />
                </p>
                <p class="prop ${hasErrors(bean:data, field:'email', 'errors')}">
                    <label>Email</label>
                    <g:textField name="email" type="text" placeholder="Place Holder Text Field 3" value='${data?.email}' />
                </p>
                <p>
                    <input type="submit" value="Submit Form" id="FormButton" >
                </p>
            </fieldset>
        </g:form>
    </body>
</html>