Я вызываю функцию mvcUrl()
для двух разных файлов JSP.В первом файле он возвращает ожидаемый результат, но во втором он возвращает URL с путем этого JSP в середине.
Я использую Spring MVC 4.1.0, Spring Security 4.0.0 на Apache Tomcat 9.
Я искал кого-то, у кого была эта проблема в течение нескольких часов, но я не могу найти ничего подобного.Я уже пробовал разные Spring Security Rules, меняя имя действия на контроллере, давая явное имя для метода, но ничего не работает.
Конфигурация My Spring Security:
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/usuarios/**").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/contas/").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/contas/form").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/contas/cadastro").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/contas/fechar").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/contas/fechar/confirmar").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/relatorios/cliente").hasRole(TipoUsuario.ADMIN.toString())
.antMatchers("/movimentacoes/**").authenticated()
.antMatchers("/login").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll().defaultSuccessUrl("/", false)
.and().logout().logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.and().exceptionHandling().accessDeniedPage("/acessoNegado");
}
Метод, который я вызываю:
@Controller
@RequestMapping("/movimentacao")
public class MovimentacaoController {
@RequestMapping(value="/cadastrar", method=RequestMethod.POST)
public ModelAndView cadastrarMovimentacao(CadastroMovimentacaoWrapper wrapper,
RedirectAttributes redirectAttributes, @AuthenticationPrincipal Usuario usuarioLogado) {
[...]
}
}
, который работает правильно:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<h1>${s:mvcUrl('MC#cadastrarMovimentacao').build() }</h1>
тот, который не:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<h1>${s:mvcUrl('MC#cadastrarMovimentacao').build() }</h1>
Я ожидаю, что функция mvcUrl
выдаст что-то вроде localhost:8080/movimentacao/cadastrar
(это именно то, что я получаю на первом JSP), но,Я получаю что-то вроде localhost:8080/WEB-INF/views/colaborador/conta.jsp/movimentacao/cadastrar
(на втором JSP)
Замечание: «WEB-INF / views / colaborador / conta.jsp» - это путь к представлению, которое отображает этот код, который не являетсярабочий.