post 405 spring boot post 请求有时候好使有时候不好使 (已解决)

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

我的主页
在这里插入图片描述
在这里插入图片描述
感谢 感谢 果然干技术的都是好人
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值