【问题标题】:Import the _form.gsp template from Grails 2 to Grails3将 _form.gsp 模板从 Grails 2 导入到 Grails3
【发布时间】:2018-08-24 15:00:30
【问题描述】:

我正在使用 Grails 3.3.3 并为我的域类生成视图。看到_form.gsp 文件被删除,我很震惊!表单现在基本上是在create.gsp动态渲染的,如下图:

<!DOCTYPE html>
<html>
    <head>
        <meta name="layout" content="main" />
        <g:set var="entityName" value="\${message(code: '${propertyName}.label', default: '${className}')}" />
        <title><g:message code="default.create.label" args="[entityName]" /></title>
    </head>
    <body>
        <a href="#create-${propertyName}" class="skip" tabindex="-1"><g:message code="default.link.skip.label" default="Skip to content&hellip;"/></a>
        <div class="nav" role="navigation">
            <ul>
                <li><a class="home" href="\${createLink(uri: '/')}"><g:message code="default.home.label"/></a></li>
                <li><g:link class="list" action="index"><g:message code="default.list.label" args="[entityName]" /></g:link></li>
            </ul>
        </div>
        <div id="create-${propertyName}" class="content scaffold-create" role="main">
            <h1><g:message code="default.create.label" args="[entityName]" /></h1>
            <g:if test="\${flash.message}">
            <div class="message" role="status">\${flash.message}</div>
            </g:if>
            <g:hasErrors bean="\${this.${propertyName}}">
            <ul class="errors" role="alert">
                <g:eachError bean="\${this.${propertyName}}" var="error">
                <li <g:if test="\${error in org.springframework.validation.FieldError}">data-field-id="\${error.field}"</g:if>><g:message error="\${error}"/></li>
                </g:eachError>
            </ul>
            </g:hasErrors>
            <g:form resource="\${this.${propertyName}}" method="POST">
                <fieldset class="form">
                    <g:render template="form"/>
                </fieldset>
                <fieldset class="buttons">
                    <g:submitButton name="create" class="save" value="\${message(code: 'default.button.create.label', default: 'Create')}" />
                </fieldset>
            </g:form>
        </div>
    </body>
</html>

我喜欢 Grails 2 中的实际表单模板,它分别列出了类的每个属性。自定义表单更容易(例如在表单页面上添加下拉菜单)。下面是 Employee 类(_form.gsp) 的示例:

<%@ page import="com.djamware.Employee" %>



<div class="fieldcontain ${hasErrors(bean: employeeInstance, field: 'email', 'error')} required">
    <label for="email">
        <g:message code="employee.email.label" default="Email" />
        <span class="required-indicator">*</span>
    </label>
    <g:field type="email" name="email" required="" value="${employeeInstance?.email}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: employeeInstance, field: 'created', 'error')} required">
    <label for="created">
        <g:message code="employee.created.label" default="Created" />
        <span class="required-indicator">*</span>
    </label>
    <g:datePicker name="created" precision="day"  value="${employeeInstance?.created}"  />

</div>

<div class="fieldcontain ${hasErrors(bean: employeeInstance, field: 'name', 'error')} required">
    <label for="name">
        <g:message code="employee.name.label" default="Name" />
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="name" required="" value="${employeeInstance?.name}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: employeeInstance, field: 'position', 'error')} required">
    <label for="position">
        <g:message code="employee.position.label" default="Position" />
        <span class="required-indicator">*</span>
    </label>
    <g:textField name="position" required="" value="${employeeInstance?.position}"/>

</div>

<div class="fieldcontain ${hasErrors(bean: employeeInstance, field: 'salary', 'error')} required">
    <label for="salary">
        <g:message code="employee.salary.label" default="Salary" />
        <span class="required-indicator">*</span>
    </label>
    <g:field name="salary" value="${fieldValue(bean: employeeInstance, field: 'salary')}" required=""/>

</div>

现在是的,我可以从 Grails 2 项目中借用 _form.gsp 文件并随意编辑它,但没有办法只在 Grails 3 中生成表单吗?

编辑:另外,如果我无法生成表单,那么如何自定义字段(例如更改日期字段的格式或组合两个字段值)?

【问题讨论】:

    标签: forms grails gsp scaffolding


    【解决方案1】:

    ...但是没有办法只在 Grails 3 中生成表单吗?

    没有。

    【讨论】:

    • 那么我如何在某些页面上自定义我的字段,而不必去寻找 grails 2 项目并替换内容?
    • 这取决于你想要做什么样的定制。
    • 我用编辑更新了我的问题。我想做一些事情,比如将日期字段格式化为“MM-dd-yyyy”格式并更改列的显示名称。我还想在给定该列的行的整数值的情况下显示某些文本。
    • 这真的是一个不同的问题了。你应该看看grails-fields-plugin.github.io/grails-fields/latest/guide/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 2016-02-26
    • 2017-04-29
    • 2012-02-13
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多