在對這段代碼進行了幾個小時的磨合后,我已經差不多明白了。這個錯誤可以說是一言難盡。
我的用戶物體:
span class="hljs-keyword">package cc.serviceops.account;
import cc.serviceops.account.helpers.UserRole;
import cc.serviceops.organization.Organisation;
import cc.serviceops.organization.Team;
import cc.serviceops.ticket.Ticket。
import cc.serviceops.ticket.TicketAction;
import lombok.Getter;
import lombok.Setter;
import org.springframework.lang.Nullable;
import javax.persistence.*;
import java.util.Objects;
import java.util.List;
@Entity @Table(name = "account")
@Getter @Setter
public class User {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String password;
private String email;
@Column(name ="first_name", nullable = true)
private String firstName;
@Column(name ="last_name", nullable = true)
private String lastName;
@Nullable
private String telephone;
private boolean enabled = true 。
@Enumerated(EnumType.STRING)
private UserRole role = UserRole.GUEST。
@ManyToOne(optional = true) @JoinColumn(name = "team_id")
private Team團隊。
@ManyToOne(optional = true) @JoinColumn(name = "organization_id")
private Organisation組織。
@OneToMany(mappedBy = "user")
private List<Ticket> ticketList;
@OneToMany(mappedBy = "creator")
private List<Ticket> createdTicketList;
@OneToMany(mappedBy = "user")
private List<TicketAction> actionList;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass() ) return false。
User user = (User)o;
return id == user.id。
}
@Override
public int hashCode() {
return Objects.hash(id)。
}
}
TicketController控制器只有保存用戶資訊的函式:
span class="hljs-keyword">package cc.serviceops.ticket;
import cc.serviceops.Tools。
import cc.serviceops.account.User;
import cc.serviceops.account.dao.SignupService;
import cc.serviceops.account.dao.UserService;
import cc.serviceops.organization.dao.OrganisationService;
import cc.serviceops.organization.Team;
import cc.serviceops.ticket.dao.TicketService;
import cc.serviceops.ticket.helpers.*;
import lombok.AllArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller。
import org.springframework.ui.Model。
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.server.ResponseStatusException。
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.validation.Valid。
import java.security.Principal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.*;
import java.util.stream.Collectors;
@Controller @AllArgsConstructorpublic class TicketController {
private final UserService userService。
private final OrganisationService organisationService;
private final TicketService ticketService;
private final SignupService signupService;
@GetMapping("/{organisation:^(?!css$|scripts$|img$|fonts$).*}/{ticket}")
public String showTicket(@PathVariable("organization") String organizationName,
@PathVariable("ticket") String ticketId。
Model模型,Principal校長) {
...
if (principal == null) { ...
model.addAttribute("anonymousTicketDto", getAnonymousDtoFromTicket(ticket))。
return "ticket/anonymous"。
}
model.addAttribute("ticketDto", getDtoFromTicket(ticket))。
return "ticket/ticket"。
}
...
@PostMapping("/{organisation:^(?!css$|scripts$|img$|fonts$).*}/anonymous")
public String doTicket(@Valid @ModelAttribute AnonymousTicketDto anonymousTicketDto, BindingResult bindingResult。
@PathVariable("organization") String organisationName, Model模型。
HttpServletRequest請求) {
Organisation activeOrganisation = organisationService.getOrganisationByName(organizationName)。
User activeUser = userService.getByEmail(anonymousTicketDto.getCreatorEmail())。
if (activeOrganisation == null) {
throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Organisation cannot be found" )。
}
if (anonymousTicketDto.getCategory() == null || anonymousTicketDto.getCategory().getId() < 1) {
bindingResult.rejectValue("category.id", "ticket.category") 。
}
if (activeUser != null) {
bindingResult.rejectValue("creatorEmail", "user.email.duplicate") 。
}
if (!anonymousTicketDto.getPassword().equals(anonymousTicketDto.getPasswordConfirmation()) & &
!anonymousTicketDto.getPasswordConfirmation().isBlank()) {
bindingResult.rejectValue("passwordConfirmation", "user.password.confirmation") 。
}
if (bindingResult.hasErrors() ) {
fillTicketAttributes(activeOrganisation, model)。
model.addAttribute("anonymousTicketDto", anonymousTicketDto) 。
return "ticket/anonymous"。
}
activeUser = new User() {{
setEmail(anonymousTicketDto.getCreatorEmail())。
setPassword(anonymousTicketDto.getPassword())。
}};
activeUser = signupService.saveGuest(activeUser)。
//activeUser中的密碼是加密的。
authWithHttpServletRequest(request, activeUser.getEmail(), anonymousTicketDto.getPassword())。
Ticket ticket = getTicketFromDto(anonymousTicketDto)。
ticket.setCreator(activeUser)。
ticket = ticketService.saveTicket(ticket)。
return String.format("redirect:/%s/%s?success", organisationName, ticket.getId())。
}
...
}
用戶服務和資源庫精華:
package cc.serviceops.account.dao;
import cc.serviceops.account.User。
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface UserRepository extends JpaRepository<User, Integer> {}。
=================
other file
=================
@Override
public User saveGuest(User user) {
String password = passwordEncoder.encode(user.getPassword() )。
user.setPassword(password)。
return userRepository.save(user)。
長話短說,用戶物件應該只需要一個郵件地址、密碼和 "enabled "欄位,默認為true。然而,由于某些原因,當這些最低限度的資訊被傳遞到資料庫中以創建一個用戶時,我得到一個錯誤,說TicketController是一個 "未知物體"。盡管TicketController不應該與資料庫有任何關系:
2021-09-17 21:08:28. 134 ERROR 53256 -- [nio-8080-exec-7] o. a.c.c.C.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: 未知物體:cc.serviceops.ticket.TicketController$2;嵌套的例外是 java.lang.IllegalArgumentException。未知物體:cc.serviceops.ticket.TicketController$2],其根本原因是
java.lang.IllegalArgumentException。未知物體:cc.serviceops.ticket.TicketController$2。
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:723) ~[hibernate-core-5. 4.32.Final.jar:5.4.32.Final]
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:706) ~[hibernate-core-5。 4.32.Final.jar:5.4.32.Final]
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
在org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator. java:362) ~[spring-orm-5.3.9.jar:5.3.9]
at com.sun.proxy.$Proxy102.persist(Unknown Source) ~[na:na] 。
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)~[na:na] 。
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
在org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator. java:311) ~[spring-orm-5.3.9.jar:5.3.9]
at com.sun.proxy.$Proxy102.persist(Unknown Source) ~[na:na]
at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save(SimpleJpaRepository.java:597) ~[spring-data-jpa-2。 5.3.jar:2.5.3]
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)~[na:na] 。
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
在org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker。 java:289) ~[spring-data-commons-2.5.3.jar:2.5.3]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) ~[spring-data-commons-2。 5.3.jar:2.5.3]
at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) ~[spring-data-commons-2。 5.3.jar:2.5.3]
在org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition. java:529) ~[spring-data-commons-2.5.3.jar:2.5.3]
at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:285) ~[spring-data-commons-2。 5.3.jar:2.5.3]
在org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport. java:599) ~[spring-data-commons-2.5.3.jar:2.5.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
在org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor. java:163) ~[spring-data-commons-2.5.3.jar:2.5.3]
在org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor. java:138) ~[spring-data-commons-2.5.3.jar:2.5.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
在org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:80) ~[spring-data-commons-2.5.3.jar:2.5.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
在org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor. java:123) ~[spring-TX-5.3.9.jar:5.3.9]
在org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport. java:388) ~[spring-TX-5.3.9.jar:5.3.9]
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119) ~[spring-TX-5。 3.9.jar:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
在org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137) ~[spring-tx-5.3.9.jar:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
在org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor. java:174) ~[spring-data-jpa-2.5.3.jar:2.5.3]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) ~[spring-aop-5。 3.9.jar:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5。 3.9.jar:5.3.9]
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215) ~[spring-aop-5。 3.9.jar:5.3.9]
at com.sun.proxy.$Proxy108.save(未知來源) ~[na:na]
at cc.serviceops.account.dao.SignupServiceImpl.saveGuest(SignupServiceImpl.java:71) ~[classes/:na]
at cc.serviceops.ticket.TicketController.doTicket(TicketController.java:279) ~[classes/:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
在java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5. 3.9.jar:5.3.9]
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5。 3.9.jar:5.3.9]
在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod. java:106) ~[spring-webmvc-5.3.9.jar:5.3.9]
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter. java:895) ~[spring-webmvc-5.30.9.jar:5.30.9]
在org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter. java:808) ~[spring-webmvc-5.3.9.jar:5.3.9]
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5。 3.9.jar:5.3.9]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1064) ~[spring-webmvc-5。 3.9.jar:5.3.9]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5. 3.9.jar:5.3.9]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5。 3.9.jar:5.3.9]
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5. 3.9.jar:5.3.9]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:681) ~[Tomcat-embed-core-9. 0.50.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5. 3.9.jar:5.3.9]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:764) ~[Tomcat-embed-core-9. 0.50.jar:4.0.FR]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:228) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[Tomcat-embed-websocket-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:121) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter. java:105) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter. java:133) ~[spring-security-web-5.5.1.jar:5.5.1]
在org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter. java:92) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.saidrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218) ~[spring-security-web-5.5.1.jar:5.5.1]
在org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89) ~[spring-security-web-5. 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.csrf.CsrfFilter.doFilterInternal(CsrfFilter.java:132) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5。 3.9.jar:5.3.9]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5。 3.9.jar:5.3.9]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter. java:80) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
在org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter. java:55) ~[spring-security-web-5.5.1.jar:5.5.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5。 3.9.jar:5.3.9]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183) ~[spring-security-web-5。 5.1.jar:5.5.1]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358) ~[spring-web-5。 3.9.jar:5.3.9]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271) ~[spring-web-5。 3.9.jar:5.3.9]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5. 3.9.jar:5.3.9]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5. 3.9.jar:5.3.9]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5. 3.9.jar:5.3.9]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5. 3.9.jar:5.3.9]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5。 3.9.jar:5.3.9]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5。 3.9.jar:5.3.9]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:190) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:163) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[Tomcat-embed-core-9。 0.50.jar:9.0.50]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[Tomcat-embed-core-9。 0.50.jar:9.0.50]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[Tomcat-embed-core-9。 0.50.jar:9.0.50]
at org.apache.catalina.valls.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9。 0.50.jar:9.0.50]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[Tomcat-embed-core-9。 0.50.jar:9.0.50]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1723) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[Tomcat-embed-core-9. 0.50.jar:9.0.50]
在java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9. 0.50.jar:9.0.50]
at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]
2021-09-17 21:08:28。 140 WARN 53256 -- [nio-8080-exec-7] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpRequestMethodNotSupportedException。請求方法'POST'不支持] 。
SignupServiceImpl:
pastebin.com/D1TmHUWp
@SpringBootApplication starter:
https://pastebin.com/bHFwMEnx。
TicketController有一個@Controller注解,User有一個@Entity,SignupServiceImpl有一個@Service,但它仍然抱怨TicketController不是一個已知的物體......
Config: User有一個@Entity。
Config:
pom: pastebin.com/B4EeKkmz。
應用程式配置。pastebin.com/KuCndSVY。
db配置類。pastebin.com/FigJScitpastebin.com/CuAxRErXpastebin.com/qAHFY3jW
uj5u.com熱心網友回復:
我認為原因是你在代碼中創建了一個匿名的類。
activeUser = new User() {{
setEmail(anonymousTicketDto.getCreatorEmail())。
setPassword(anonymousTicketDto.getPassword())。
}};
需要類似于
的內容 activeUser = new User()。
activeUser.setEmail(anonymousTicketDto.getCreatorEmail())。
activeUser.setPassword(anonymousTicketDto.getPassword())。
關于Java中匿名類的一些背景資訊。https://www.baeldung.com/java-anonymous-classes
一個很酷的工具,可能會緩解控制器中DTO和Entity之間的轉換(我個人在一些專案中使用它,并且非常喜歡它)。https://mapstruct.org/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329357.html
標籤:
