当前位置: 首页 > 知识库问答 >
问题:

使用@Requestbody将字符串从角度传递到Spring

周楷
2023-03-14

我正在使用angularjs启动一个项目。我试图通过我的应用程序发送电子邮件使用Spring启动启动邮件。邮件的消息和对象是由用户以一种形式写的。我想做的是在我的RestController中使用@刚体获取消息和对象值。

我service.js中的功能

// send mail
                var sendMail = function(id, objet, msg) {
                    var deferred = $q.defer();
                    $http.post(urlBase + id, objet, msg).then(
                            function(response) {
                                deferred.resolve(response.data);
                            }, function(errResponse) {
                                console.error('Error while sending email');
                                deferred.reject(errResponse);
                            });
                    return deferred.promise;
                }

我的restContoller中的方法

@RestController公共类EmailController{

@Autowired
private JavaMailSender javaMailSender;
@Autowired
UtilisateurService service;

@RequestMapping(value = "/users/{id}", method = RequestMethod.POST)
public ResponseEntity<Void> sendMail(@PathVariable("id") int id, @RequestBody String objet,
        @RequestBody String msg) {
    Utilisateur currentUser = service.findById(id);
    SimpleMailMessage message = new SimpleMailMessage();
    message.setTo(currentUser.getEmailUtil());
    message.setSubject(objet);
    message.setText(msg);
    javaMailSender.send(message);
    return new ResponseEntity<Void>(HttpStatus.OK);
}}

这将引发此异常:

Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public org.springframework.http.ResponseEntity<java.lang.Void> com.sla.utilisateur.controller.EmailController.sendMail(int,java.lang.String,java.lang.String)

我怎么才能修好它?

谢谢你,

共有1个答案

曹昊焱
2023-03-14

您使用的$http.post是不正确的。您应该看看AngularJS POST留档。$http.post参数如下:

post(url, data, [config]);

AngularJS默认以JSON格式发送数据。因此,您应该使用以下语句发送请求(例如):

$http.post(urlBase + id, {subject:objet, body:msg})

在您的控制器中,您应该只定义一个@recestBody映射,以便于示例中的Map(您可以将其更改为POJO。):

@RequestMapping(value = "/users/{id}", method = RequestMethod.POST)
public ResponseEntity<Void> sendMail(@PathVariable("id") int id, @RequestBody Map<String,String> msg) {
    Utilisateur currentUser = service.findById(id);
    SimpleMailMessage message = new SimpleMailMessage();
    message.setTo(currentUser.getEmailUtil());
    message.setSubject(msg.get("subject");
    message.setText(msg.get("body"));
    javaMailSender.send(message);
    return new ResponseEntity<Void>(HttpStatus.OK);
}}
 类似资料:
  • 问题内容: 我有一个字符串数组一样,我想这个数组发送到 ç 使用 JNI 。我找不到任何明确的解决方案。我试图将此字符串视为成功,但没有成功。 有没有办法做到这一点? 问题答案: 您可以编写一个简单的函数,该函数接受一个对象,将每个对象强制转换为jstring,然后对其进行调用。 像这样:

  • 我试图在php脚本和c程序之间传递参数。我的php脚本如下所示 然后我想我的c程序返回给我一个字符串(但我真的不知道怎么做),你能帮忙吗?

  • 问题内容: 背景: 我创建了一个非常简单的前端,用户可以在其中输入字符串。输入并单击“检查”按钮后,我想将此字符串作为JSON传递给python字符串,它将在其中进行SQL查找。根据SQL外观,python脚本应传递一个布尔值,该值应更改?到✔或✘。 题: 一旦按下“检查”按钮作为JSON到Python脚本,然后如何将字符串从Python传递到HTML,将?更改为✔或✘,如何传递字符串? 研究:

  • 我是aws lambda和api网关的新手,我正在尝试向lambda函数传递一个json字符串。 但是,lambda不是用字符串调用的。 这是lambda。它获取一个对象作为输入,并返回类的字符串表示形式和对象的值。 api网关的映射模板是 api网关测试中的日志显示: 我希望json字符串被传递给lambda(作为字符串对象),但是TestMapping lambda返回的不是这个 如您所见,L

  • 问题内容: 我有一个PHP脚本,可以从数据库中检索名称(字符串)。我想使用$ .ajax()将此数组传递给Javascript。我不明白如何在PHP中对数组进行编码,然后在Javascript中对其进行解码。有人可以为此提供示例代码吗?非常感谢 !! 问题答案: HTML档案:

  • 问题内容: 我正在查询页面上,用户在其中选择一个代表不同类型的值,每个值由一个ID标识。问题是使用WHERE IN方法从数据库中选择这些ID。 这是我的SQL语句 它将适用于一个单一值,例如。46,但如果值放在方括号中则不是,例如。(46)或(‘46’),即IN的方式。 我使用的是Visual Studio,它会自动生成访问表适配器以获取值的方法,所以我认为我必须通过SQL来做到这一点。 我正在传