在我的春季应用程序中,我有以下表格,其操作将触发我的控制器的方法:
<form method="POST" action="cadastra_evento.html">
<input type="text" name="nome" placeholder="Nome" size=20 maxlength=40> <br/>
<input type="text" name="descricao" placeholder="Descrição" size=30 maxlength=100> <br/>
<h3>Periodo da Data</h3>
inicio: <input name="data_inicial" placeholder="DD-MM-AAAA" pattern="d{2}-d{2}-d{4}" /> <br/>
final: <input name="data_final" placeholder="DD-MM-AAAA" pattern="d{2}-d{2}-d{4}" /> <br/>
<h3>Periodo do Horário</h3>
inicio: <input name="hora_inicial" placeholder="HH:MM:SS" pattern="d{2}:d{2}:d{2}" /> <br/>
final: <input name="hora_final" placeholder="HH:MM:SS" pattern="d{2}:d{2}:d{2}" /> <br/>
<input type="text" name="duracao" placeholder="duração" size=20 maxlength=2> Minutos <br/>
<button type="submit" class="btn btn-lg btn-primary">Cadastrar</button>
</form>
与此页面关联的方法是:
@RequestMapping(value="/cadastra_evento", method=RequestMethod.POST)
public ModelAndView cadastra_evento(@RequestParam("nome") String nome, @RequestParam("descricao") String descricao, @RequestParam("data_inicial") String data_inicial, @RequestParam("hora_inicial") String hora_inicial, @RequestParam("data_final") String data_final, @RequestParam("hora_final") String hora_final, @RequestParam("duracao") String duracao)
{
if(sessao != null)
{
if(sessao.getUsuario().temAutorizacao("cad_evento"))
{
Date d_inicio = new Date(Date.parse(data_inicial));
Date d_final = new Date(Date.parse(data_final));
Time h_inicio = new Time(Time.parse(hora_inicial));
Time h_final = new Time(Time.parse(hora_final));
int duracao2 = Integer.valueOf(duracao).intValue();
EventoDAO evento = new EventoDAO(nome, descricao, d_inicio, d_final, h_inicio, h_final, duracao2, sessao.getUsuario());
int saida = evento.cadastra();
if(saida == 0)
{
ModelAndView mav = new ModelAndView();
mav.addObject("message", "Erro ao cadastrar o evento");
return mav;
}
else
{
ModelAndView mav = new ModelAndView();
mav.setViewName("/listagem_evento");
return mav;
}
}
else
{
ModelAndView mav = new ModelAndView();
mav.addObject("message", "Usuário sem permissão de acesso");
return mav;
}
}
else
{
ModelAndView mav = new ModelAndView();
mav.setViewName("/usuario_login_page");
return mav;
}
}
发生的事情是,当我单击"提交"按钮时,我会收到错误消息404,因为系统正在尝试到达页面/web-inf/jsp/cadastra_evento.jsp,这是不存在的。我有另一个页面,该页面使用了相同的方案,login.htm,由登录页面触发,但该页面正常工作。
有人可以在上面的代码中找到任何错误?
ps。:我尝试使用请求Param的属性"值"的名称与方法的名称不匹配(我考虑过某种冲突),但仍然不起作用)。
尝试在控制器请求映射之后添加.html
:
@RequestMapping(value="/cadastra_evento.html", method=RequestMethod.POST)
或从表格中删除.html
:
<form method="POST" action="cadastra_evento">