2014-11-29 5 views
0

В моем текущем проекте весны-загрузке, у меня есть страница, построенная с Thymeleaf, где у меня есть форма, как что:Отправили данные не хранятся в базе данных

<form class="form" role="form" method="post" th:action="@{/__${command.getClass().getSimpleName()}__/cadastra}"> 
    ... 
</form> 

, который визуализируется на это:

<form class="form" role="form" method="post" action="/Usuario/cadastra"> 
    ... 
</form> 

проблема происходит, когда я пытаюсь отправить форму: следующее сообщение об ошибке срабатывает:

error: "Internal Server Error" 
exception: "org.thymeleaf.exceptions.TemplateInputException" 
message: "Error resolving template "Usuario/cadastra", template might not exist or might not be accessible by any of the configured Template Resolvers" 
path: "/Usuario/cadastra" 
status: 500 
timestamp: 1417225370311 

в т он отображается на дисплее:

2014-11-28 22:42:50.303 ERROR 32286 --- [nio-8080-exec-4] org.thymeleaf.TemplateEngine    : [THYMELEAF][http-nio-8080-exec-4] Exception processing template "Usuario/cadastra": Error resolving template "Usuario/cadastra", template might not exist or might not be accessible by any of the configured Template Resolvers 
2014-11-28 22:42:50.305 ERROR 32286 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: Error resolving template "Usuario/cadastra", template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause 

org.thymeleaf.exceptions.TemplateInputException: Error resolving template "Usuario/cadastra", template might not exist or might not be accessible by any of the configured Template Resolvers 
     at org.thymeleaf.TemplateRepository.getTemplate(TemplateRepository.java:245) 
     at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1104) 
     at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1060) 
     at org.thymeleaf.TemplateEngine.process(TemplateEngine.java:1011) 
     at org.thymeleaf.spring4.view.ThymeleafView.renderFragment(ThymeleafView.java:335) 
     at org.thymeleaf.spring4.view.ThymeleafView.render(ThymeleafView.java:190) 
     at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1221) 
     at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1005) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:952) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:646) 
     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
     at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
     at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:146) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:57) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) 
     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
     at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
     at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
     at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1736) 
     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1695) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
     at java.lang.Thread.run(Thread.java:745) 

Любой может видеть, в чем проблема здесь?

PS .: обработчик для данных, представленных этот метод контроллера:

@RequestMapping(value = "cadastra", method=RequestMethod.POST) 
    public void cadastra(@ModelAttribute("object") E object, BindingResult result) { 
    serv.cadastra(object); 
    } 

ОБНОВЛЕНИЕ

Я решить эту ошибку выше, добавление аннотаций @ResponseBody к методу в контроллере, но теперь У меня есть еще одна проблема: несмотря на то, что больше не отображаются ошибки, представленные данные не сохраняются в базе данных (это происходит, если я пытаюсь обновить или удалить объект).

методы в контроллере которые обрабатывают эти операции являются:

@RequestMapping(value = "cadastra", method=RequestMethod.POST) 
    @ResponseBody 
    public void cadastra(@ModelAttribute("object") E object, BindingResult result) { 
    serv.cadastra(object); 
    } 

    @RequestMapping(value = "altera", method=RequestMethod.POST) 
    @ResponseBody 
    public void altera(@ModelAttribute("object") E object, BindingResult result) { 
    serv.altera(object); 
    } 

    @RequestMapping(value = "remove", method=RequestMethod.POST) 
    @ResponseBody 
    public void remove(@ModelAttribute("object") E object, BindingResult result) { 
    serv.remove(object); 
    } 

В моем классе обслуживания:

@PreAuthorize("hasPermission(#user, 'cadastra_'+#this.this.name)") 
    @Transactional 
    public void cadastra(E object) { 
    dao.insert(object); 
    } 

    @PreAuthorize("hasPermission(#user, 'altera_'+#this.this.name)") 
    @Transactional 
    public void altera(E object) { 
    dao.update(object); 
    } 

    @PreAuthorize("hasPermission(#user, 'remove_'+#this.this.name)") 
    @Transactional 
    public void remove(E object) { 
    dao.delete(object); 
    } 

и в моем Dao классе:

@Transactional 
public void insert(E object) { 
    getEntityManager().persist(object); 
} 

@Transactional 
public void update(E object) { 
    getEntityManager().merge(object); 
} 

@Transactional 
public void delete(E object) { 
    getEntityManager().remove(object); 
} 

что теперь случилось?

ответ

0

мне удалось решить эту проблему, используя эту структуру методов моего класса дао:

public void insert(E object) { 
    EntityManager entityManager = getEntityManager(); 
    entityManager.getTransaction().begin(); 
     entityManager.persist(object); 
    entityManager.getTransaction().commit(); 
} 
+0

Я не думаю, что @Transactional настроен правильно. Вы не сможете начинать и совершать транзакции, управляемые пользователем. Вы выполняете аудит службы на контроллере? Ошибка говорит, что «проблема в том, что шаблон отсутствует», как сказал Дэйв. У контроллера есть @RequestMapping («Usuario»)? Или попробуйте аннотировать метод с помощью @RequestMapping («Usuario/cadastra») –

1

Проблема в том, что шаблон отсутствует. Если ваш шаблон находится в другом месте, чем по умолчанию, вам нужно вернуть строку из вашего @RequestMapping.

Смежные вопросы