欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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") 实现修改

post 405 spring boot post 请求有时候好使有时候不好使 (已解决)
post 405 spring boot post 请求有时候好使有时候不好使 (已解决)
post 405 spring boot post 请求有时候好使有时候不好使 (已解决)
感谢 感谢 果然干技术的都是好人
post 405 spring boot post 请求有时候好使有时候不好使 (已解决)

相关标签: post