post 405 spring boot post 请求有时候好使有时候不好使 (已解决)
程序员文章站
2022-03-28 11:11:59
...
post 405 spring boot post 请求有时候好使有时候不好使 (已解决)
问题描述 我在写论坛的 修改功能时 当我直接进入 修改的controller 提交好使
但是当我从另外一个页面进入时不好使 post405 错误
直接写结论 不浪费大家时间
我TM 把标签中的 action 写成了active ??? idea 自动补全的 没注意到
但是不知为何直接访问页能提交啊。有待深究
还有十分感谢 @小章鱼鸭 的帮助 感谢感谢感谢
下面是代码 有兴趣看一下
前端(publish.html)
<form action="/publish" method="post">
<input type="hidden" name="id" th:value="${id}">
<div class="form-group">
<label for="title">问题标题</label>
<input type="text" name="title" class="form-control" id="title" placeholder="问题标题"
th:value="${title}">
</div>
<div class="form-group">
<label for="title">问题详情 </label>
<textarea name="description" id="description" class="form-control" rows="10" cols="30"
th:text="${description}"></textarea>
</div>
<div class="form-group">
<label for="title">添加标签 </label>
<input type="text" name="tag" id="tag" class="form-control" placeholder="输入标签以 , 分隔"
th:value="${tag}">
</div>
<!--错误信息 -->
<span class="alert alert-dange" th:text="${erro}" th:if="${erro!=null}"></span>
<button type="submit" class="btn btn-success btn-publish">发布</button>
</form>
controller
package com.xuxiang.community.controller;
import com.xuxiang.community.dto.QuestionDto;
import com.xuxiang.community.mapper.QuestionMapper;
import com.xuxiang.community.model.Question;
import com.xuxiang.community.model.User;
import com.xuxiang.community.service.QuestionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@Controller
public class publishController {
@Autowired
private QuestionMapper questionMapper;
@Autowired
private QuestionService questionService;
@GetMapping("publish/{action}")
public String edit(
@PathVariable(name = "action") Integer action,
Model model) {
QuestionDto question = questionService.getById(action);
model.addAttribute("title", question.getTitle());
model.addAttribute("description", question.getDescription());
model.addAttribute("tag", question.getTag());
model.addAttribute("id", question.getId());
return "publish";
}
@GetMapping("/publish")
public String publish() {
return "publish";
}
@PostMapping("/publish")
public String doPublish(
@RequestParam("title") String title,
@RequestParam("description") String description,
@RequestParam("tag") String tag,
@RequestParam("id") Integer id,
HttpServletRequest request,
Model model) {
model.addAttribute("title", title);
model.addAttribute("description", description);
model.addAttribute("tag", tag);
//验证输入是否完整
if (title == "") {
model.addAttribute("erro", "没有标题");
return "publish";
} else if (description == "") {
model.addAttribute("erro", "没有内容");
return "publish";
} else if (tag == "") {
model.addAttribute("erro", "没有标签");
return "publish";
}
//验证是否登录
User user = (User) request.getSession().getAttribute("user");
if (user == null) {
model.addAttribute("erro", "没有登录");
return "publish";
}
//将问题存入到数据库中
Question question = new Question();
question.setTitle(title);
question.setDescription(description);
question.setTag(tag);
question.setCreator(user.getId());
question.setGmtCreate(System.currentTimeMillis());
question.setGmtModified(question.getGmtCreate());
question.setId(id);
questionService.creatorUpdate(question);
return "redirect:/";//重定向
}
}
访问 controller 里的 publish 会根据访问的方式不同(get post )
或者参数不同进行 不同的操作
我的业务是 当你点击发布按钮 进入的publish.html页面 就调用@PostMapping("/publish")
当你点击 主页的 某个a标签 (就是下图 我)进入时 会变调用 @GetMapping(“publish/{action}”)
然后带着id在调用 @PostMapping("/publish") 实现修改
感谢 感谢 果然干技术的都是好人
上一篇: 短信息