Атрибут шаблона не работает должным образом на Groovy страницах сервера (GSP) - PullRequest
0 голосов
/ 06 мая 2020

Я хочу иметь текстовое поле, которое допускает только значения между ${....} or 1 to 200 numeri c value.

Мое регулярное выражение: (\$\{(.*?)\}$)|(^([0-9][0-9]?|1[0-9][0-9]|200)$)

Ожидаемые значения: ${abc}, 188, 22, etc..

Я проверил это регулярное выражение в https://regexr.com/, и оно сработало правильно. но в groovy он вообще не работает. Это вызывает ошибку компиляции.

здесь мне настоятельно нужно было использовать \ $ вместо $. Из-за ошибки компиляции groovy.

код:

<g:textField name="code" value="abc" pattern="(\$\{(.*?)\}\$)|(^([0-9][0-9]?|1[0-9][0-9]|200)\$)"
                             title="value must be JavaScript Function or numeric value upto 200"/>

ошибка:

    2020-05-06T05:52:52.823Z | admin:13.2.0:8fffe5cd-310b-4ead-ac66-44f5e7eed150 | [http-nio-8080-exec-9] | [GET] /admin/accounts/83324/companies/86333/customRules/69276974C827456EB7AF1CF0194365C4/edit | a0965facd65a4b6bb16db726ab2bb156 | b16db726ab2bb156 | ERROR |                                         StackTrace:101   --- Full Stack Trace:
org.grails.gsp.GroovyPagesException: Could not parse script [/Users/d070812/Documents/Git/latest/admin/grails-app/views/customRule/edit.gsp]: startup failed:
Users_d070812_Documents_Git_latest_admin_grails_app_views_customRule_edit_gsp: 40: unexpected char: '\' @ line 40, column 235.
   )\\$)"', 34, it) { return "(\$\{(.*?)\}\
                                 ^

1 error

    at org.grails.gsp.GroovyPagesTemplateEngine.compileGroovyPage(GroovyPagesTemplateEngine.java:609)
    at org.grails.gsp.GroovyPagesTemplateEngine.buildPageMetaInfo(GroovyPagesTemplateEngine.java:549)
    at org.grails.gsp.GroovyPagesTemplateEngine.buildPageMetaInfo(GroovyPagesTemplateEngine.java:447)
    at org.grails.gsp.GroovyPagesTemplateEngine$GroovyPagesTemplateEngineCacheEntry.updateValue(GroovyPagesTemplateEngine.java:137)
    at org.grails.gsp.GroovyPagesTemplateEngine$GroovyPagesTemplateEngineCacheEntry.updateValue(GroovyPagesTemplateEngine.java:116)
    at grails.util.CacheEntry.getValue(CacheEntry.java:152)
    at grails.util.CacheEntry.getValue(CacheEntry.java:88)
    at org.grails.gsp.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:283)
    at org.grails.gsp.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:273)
    at org.grails.gsp.GroovyPagesTemplateEngine.createTemplate(GroovyPagesTemplateEngine.java:375)
    at org.grails.web.servlet.view.GroovyPageView.initTemplate(GroovyPageView.java:178)
    at org.grails.web.servlet.view.GroovyPageView.afterPropertiesSet(GroovyPageView.java:167)
    at org.grails.web.servlet.view.GroovyPageViewResolver.createGroovyPageView(GroovyPageViewResolver.java:223)
    at org.grails.web.servlet.view.GroovyPageViewResolver.createGrailsView(GroovyPageViewResolver.java:205)
    at org.grails.web.servlet.view.GroovyPageViewResolver.loadView(GroovyPageViewResolver.java:93)
    at grails.plugin.scaffolding.ScaffoldingViewResolver.loadView(ScaffoldingViewResolver.groovy:45)
    at org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:244)
    at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:473)
    at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:146)
    at org.grails.web.servlet.view.GrailsLayoutViewResolver.resolveViewName(GrailsLayoutViewResolver.java:57)
    at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1325)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1263)
    at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    at com.sap.fsm.admin.TraceMethodFilter.doFilterInternal(TraceMethodFilter.groovy:18)
    at io.prometheus.client.filter.MetricsFilter.doFilter(MetricsFilter.java:170)
    at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:100)
    at com.sap.fsm.admin.MetricsFilter.doFilterInternal(MetricsFilter.groovy:24)
    at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
    at grails.plugin.springsecurity.web.UpdateRequestContextHolderExceptionTranslationFilter.doFilter(UpdateRequestContextHolderExceptionTranslationFilter.groovy:64)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at grails.plugin.springsecurity.web.filter.GrailsHttpPutFormContentFilter.doFilterInternal(GrailsHttpPutFormContentFilter.groovy:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at grails.plugin.springsecurity.web.filter.GrailsAnonymousAuthenticationFilter.doFilter(GrailsAnonymousAuthenticationFilter.groovy:54)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:158)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at grails.plugin.springsecurity.web.authentication.logout.MutableLogoutFilter.doFilter(MutableLogoutFilter.groovy:64)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at grails.plugin.springsecurity.web.SecurityRequestHolderFilter.doFilter(SecurityRequestHolderFilter.groovy:58)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:214)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:177)
    at org.grails.web.servlet.mvc.GrailsWebRequestFilter.doFilterInternal(GrailsWebRequestFilter.java:77)
    at org.grails.web.filters.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:67)
    at org.springframework.session.web.http.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.java:167)
    at com.sap.fsm.admin.SessionRepositoryFilter.doFilterInternal(SessionRepositoryFilter.groovy:28)
    at org.springframework.session.web.http.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:80)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
Users_d070812_Documents_Git_latest_admin_grails_app_views_customRule_edit_gsp: 40: unexpected char: '\' @ line 40, column 235.
   )\\$)"', 34, it) { return "(\$\{(.*?)\}\
...