Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs/javaspring Boot-RequestMethod.POST-null值_Java_Spring_Request_Axios - Fatal编程技术网

Reactjs/javaspring Boot-RequestMethod.POST-null值

Reactjs/javaspring Boot-RequestMethod.POST-null值,java,spring,request,axios,Java,Spring,Request,Axios,我正在使用reactjs和JavaSpring引导。我正在尝试建立一个管理面板-将使用POST而不是GET请求-来更新站点面板数据 我一直在使用GET,因为我无法让它工作,但现在数据更复杂了,我觉得我必须尝试让它作为一个帖子工作。我确信axios部件正在将数据推送到服务器上——我可以在有效负载中看到它——但当我打印出参数时,它们显示为null 反应动作 import axios from 'axios'; import CONFIG from './_configApi';//add conf

我正在使用reactjs和JavaSpring引导。我正在尝试建立一个管理面板-将使用POST而不是GET请求-来更新站点面板数据

我一直在使用GET,因为我无法让它工作,但现在数据更复杂了,我觉得我必须尝试让它作为一个帖子工作。我确信axios部件正在将数据推送到服务器上——我可以在有效负载中看到它——但当我打印出参数时,它们显示为null

反应动作

import axios from 'axios';

import CONFIG from './_configApi';//add config api

import { fetchInitPane } from './initPaneAction';

export const FETCH_EDIT_PANE_SUCCESS = 'FETCH_EDIT_PANE_SUCCESS'
export const FETCH_EDIT_PANE_FAILURE = 'FETCH_EDIT_PANE_FAILURE'

export function editPaneSuccess(response) {
  return {
    type: FETCH_EDIT_PANE_SUCCESS,
    payload: response
  }
}

export function editPaneFail(response) {
  return {
    type: FETCH_EDIT_PANE_FAILURE,
    payload: response
  }
}

export function fetchEditPane(data) {
  let url = CONFIG.EDIT_PANE_API;
  return function (dispatch) {     
   /*axios.get(url, {
      params: data
    })*/
    axios.post(url, data)
      .then(function (response) {

      response = null;

        dispatch(editPaneSuccess(response));      
      dispatch(fetchInitPane(null));
      })
      .catch(function (error) {
        dispatch(editPaneFail(error));
      });
  }
}
但我的问题在于Java方法

//api/editPane
@RequestMapping(value = {"/api/editPane"}, method = RequestMethod.POST)
@CrossOrigin(origins = {"*"})
public ResponseEntity<?> editpane(
        @RequestParam(value="tile1", required=false) String tile1,
        @RequestParam(value="tile2", required=false) String tile2,
        @RequestParam(value="about", required=false) String about,
        @RequestParam(value="privacy", required=false) String privacy           
        //HttpServletRequest request
        ) throws Exception {

            JSONObject loggedUser = getLoggedInUser();
            String role = (String) loggedUser.get("role");
            //check to make sure they are an admin user - this is sensitive data
            //System.out.println("role"+ role);

            System.out.println("tile1"+ tile1);
            System.out.println("tile2"+ tile2);
            System.out.println("about"+ about);
            System.out.println("privacy"+ privacy);


            if(role.equals("1")){
                //create api admin instance
                //AdminModel myApiAdmin = new AdminModel(); 

                //find matching row
                Long id = (long) 0;
                TblSitePages sitePages = tblSitePagesRepository.findById(id);

                //tile1
                if(tile1 != sitePages.getTile1()){
                    //sitePages.setTile1(tile1);
                }           
                //tile2
                if(tile2 != sitePages.getTile2()){
                    //sitePages.setTile2(tile2);
                }   
                //about
                if(about != sitePages.getAbout()){
                    sitePages.setAbout(about);
                }                   
                //privacy
                if(privacy != sitePages.getPrivacy()){
                    sitePages.setPrivacy(privacy);
                }

                tblSitePagesRepository.saveAndFlush(sitePages);

                JSONObject response = ResponseWrapper(null, "success", "Updating site pane data");
                return new ResponseEntity<>(response, HttpStatus.OK);                   
            } else{

                JSONObject response = ResponseWrapper(null, "error", "Not an admin");
                return new ResponseEntity<>(response, HttpStatus.OK);
            }
}   
//api/editPane
@RequestMapping(值={“/api/editPane”},方法=RequestMethod.POST)
@交叉原点(原点={“*”})
公共响应编辑窗格(
@RequestParam(value=“tile1”,required=false)字符串tile1,
@RequestParam(value=“tile2”,required=false)字符串tile2,
@RequestParam(value=“about”,required=false)字符串about,
@RequestParam(value=“privacy”,required=false)字符串隐私
//HttpServletRequest请求
)抛出异常{
JSONObject loggedUser=getLoggedInUser();
字符串角色=(字符串)loggedUser.get(“角色”);
//检查以确保他们是管理员用户-这是敏感数据
//System.out.println(“角色”+角色);
System.out.println(“tile1”+tile1);
System.out.println(“tile2”+tile2);
System.out.println(“关于”+about);
System.out.println(“隐私”+隐私);
如果(角色等于(“1”)){
//创建api管理实例
//AdminModel myApiAdmin=新的AdminModel();
//查找匹配行
长id=(长)0;
TblSitePages sitePages=tblSitePagesRepository.findById(id);
//瓷砖1
if(tile1!=sitePages.getTile1()){
//sitePages.setTile1(tile1);
}           
//瓷砖2
if(tile2!=sitePages.getTile2()){
//sitePages.setTile2(tile2);
}   
//关于
if(about!=sitePages.getAbout()){
sitePages.setAbout(关于);
}                   
//隐私权
if(privacy!=sitePages.getPrivacy()){
设置隐私(隐私);
}
tblSitePagesRepository.saveAndFlush(站点页面);
JSONObject response=ResponseWrapper(null,“成功”,“更新站点窗格数据”);
返回新的ResponseEntity(response,HttpStatus.OK);
}否则{
JSONObject response=ResponseWrapper(null,“错误”,“不是管理员”);
返回新的ResponseEntity(response,HttpStatus.OK);
}
}   

如果使用查询参数(显示为@RequestParam()),则需要调用如下服务

http://localhost:8080/api/editPane?title1="value"&title2="value"
required=false表示查询参数是可选的。因此,如果不提供参数,它将为null

这里有一个更好的解决方案:

使用pojo类,如

public class EditPane {
    private String title1;
    private String title2;
    private String about;
    private String privacy;

    public EditPane() {}

    // Getter and Setters
}
重写您的Post方法:

@RequestMapping(value = {"/api/editPane"}, method = RequestMethod.POST)
@CrossOrigin(origins = {"*"})
public ResponseEntity<?> editpane(@RequestBody EditPane editPane) {
  //doSuff();
}
@RequestMapping(value={/api/editPane},method=RequestMethod.POST)
@交叉原点(原点={“*”})
公共响应属性editpane(@RequestBody editpane editpane){
//doSuff();
}

解决方案如下

在axios的JS端-使用POST

import axios from 'axios';

import CONFIG from './_configApi';//add config api

import { fetchInitPane } from './initPaneAction';

export const FETCH_EDIT_PANE_SUCCESS = 'FETCH_EDIT_PANE_SUCCESS'
export const FETCH_EDIT_PANE_FAILURE = 'FETCH_EDIT_PANE_FAILURE'

export function editPaneSuccess(response) {
  return {
    type: FETCH_EDIT_PANE_SUCCESS,
    payload: response
  }
}

export function editPaneFail(response) {
  return {
    type: FETCH_EDIT_PANE_FAILURE,
    payload: response
  }
}

export function fetchEditPane(data) {
  let url = CONFIG.EDIT_PANE_API;
  return function (dispatch) {     
    axios.post(url, data)
      .then(function (response) {

      response = null;

        dispatch(editPaneSuccess(response));      
      dispatch(fetchInitPane(null));
      })
      .catch(function (error) {
        dispatch(editPaneFail(error));
      });
  }
}
在Java端,通过以下命令选择变量

  • 创建映射变量的模型
  • -

    然后按如下所示重新配置映射

    //api/editPane
    @RequestMapping(value = {"/api/editPane"}, method = RequestMethod.POST)
    @CrossOrigin(origins = {"*"})
    public ResponseEntity<?> editpane(
            @RequestBody EditPane editPane
            ) throws Exception {
                String tile1 = editPane.getTile1();
                String tile2 = editPane.getTile2();
                String about = editPane.getAbout();
                String privacy = editPane.getPrivacy();
                String terms = editPane.getTerms();                     
    }   
    
    //api/editPane
    @RequestMapping(值={“/api/editPane”},方法=RequestMethod.POST)
    @交叉原点(原点={“*”})
    公共响应编辑窗格(
    @RequestBody编辑窗格编辑窗格
    )抛出异常{
    String tile1=editPane.getTile1();
    String tile2=editPane.getTile2();
    字符串about=editPane.getAbout();
    String privacy=editPane.getPrivacy();
    String terms=editPane.getTerms();
    }   
    
    //api/editPane
    @RequestMapping(value = {"/api/editPane"}, method = RequestMethod.POST)
    @CrossOrigin(origins = {"*"})
    public ResponseEntity<?> editpane(
            @RequestBody EditPane editPane
            ) throws Exception {
                String tile1 = editPane.getTile1();
                String tile2 = editPane.getTile2();
                String about = editPane.getAbout();
                String privacy = editPane.getPrivacy();
                String terms = editPane.getTerms();                     
    }