0

I have a grails application with several pages and controllers. While some of the actions work properly and the gsp pages rendering correctly, some of them aren't being rendered due to some CGLIB related error. Here is my exception when I want to run /panel/create action:

processing request: [GET] /panel/create
Template not found for name [form] and path [/panelController$$EnhancerByCGLIB/_form.gsp]. Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error proc                                                                                                                                                             essing GroovyPageView: Template not found for name [form] and path [/panelContro                                                                                                                                                             ller$$EnhancerByCGLIB/_form.gsp]
    at grails.plugin.cache.web.filter.PageFragmentCachingFilter.doFilter(Pag                                                                                                                                                             eFragmentCachingFilter.java:195)
    at grails.plugin.cache.web.filter.AbstractFilter.doFilter(AbstractFilter                                                                                                                                                             .java:63)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.                                                                                                                                                             java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor                                                                                                                                                             .java:615)
    at java.lang.Thread.run(Thread.java:722)

_form.gsp:

<div class="fieldcontain ${hasErrors(bean: panelInstance, field: 'unitProtocol', 'error')} required">
<label for="unitProtocol">
    <g:message code="panel.checkupPanel.label" />
    <span class="required-indicator">*</span>
</label>

<g:if test="${panelInstance?.unitProtocol}">
    <g:select id="unitProtocol" name="unitProtocolId" from="${unitProtocolService.getNonDefinedCheckUpPanelUnitProtocols() + panelInstance?.unitProtocol }" optionKey="code" value="${panelInstance?.unitProtocol?.code}" class="many-to-one"/>
</g:if>
<g:else>
    <g:select id="unitProtocol" name="unitProtocolId" from="${unitProtocolService.getNonDefinedCheckUpPanelUnitProtocols()}" optionKey="code" value="${panelInstance?.unitProtocol?.code}" class="many-to-one"/>
</g:else>
</div>
        <div class="fieldcontain panelGrid grid">
            <table id="panelGrid"></table>
        </div>

        <div id="panelPager"></div>

<script type="text/javascript" src="${resource(dir: 'js', file: 'panel.js')}"></script>

create.gsp

<%@ page import="akum.main.pricingcontract.Panel" %>
<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main">
    <g:set var="entityName" value="${message(code: 'panel.label', default: 'Panel')}" />
    <title><g:message code="default.create.label" args="[entityName]" /></title>
</head>
<body>
    <div id="create-panel" 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="${panelInstance}">
        <ul class="errors" role="alert">
            <g:eachError bean="${panelInstance}" 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 action="save" >
            <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>

PanelController:

package akum.main.pricingcontract

import javax.persistence.Transient;

import grails.converters.JSON

import org.springframework.dao.DataIntegrityViolationException
import org.springframework.transaction.annotation.Transactional;

class PanelController {

def fpProviderService
def unitProtocolService

static allowedMethods = [save: "POST", update: "POST", delete: "POST"]

def index() {
    redirect(action: "list", params: params)
}

def list(Integer max) {
    params.max = Math.min(max ?: 10, 100)
    removeSessionParameters()
    [panelInstanceList: Panel.list(params), panelInstanceTotal: Panel.count()]
}

def create() {
    session.activePanelOperation = "create"
    [panelInstance: new Panel(params)]
}
}

The views are created using grails scaffolding and only little business involved.

My Grails version is 2.1.1.

mosahin
  • 167
  • 1
  • 9

1 Answers1

0

It turns out to be @Transactional annotated save methods on my controllers. I resolved the issue when I removed them.

mosahin
  • 167
  • 1
  • 9