【问题标题】:Resteasy @FormParam null when passing params with AngularJS使用AngularJS传递参数时Resteasy @FormParam null
【发布时间】:2015-01-08 17:32:42
【问题描述】:

我正在尝试在前端使用 AngularJS 并使用 Resteasy 作为 Rest API。 我的问题是使用 AngularsJS 发送参数时我的 @FormParam 始终为空。

这是我的 JS:

$scope.addPerson = function(newFirstName, newLastName) {
            $http({
                method: 'POST',
                url: "rest/persons/savePerson",
                data: {firstName: 'newFirstName', lastName: 'newLastName'},
                headers: {'Content-Type': 'application/json'}
            })
            .success(function(data) {
                alert("DATA  : " + data);
            }).error(function(data, status, headers, config) {
                alert("Could not save new person");
            });
        };

这是我的代码服务器端:

@POST
@Path("/savePerson")
@Produces("application/json")
@Secured({ "ROLE_USER" })
public PersonBean savePerson(@FormParam("firstName") String firstName,
        @FormParam("lastName") String lastName) {
    if (firstName== null || lastName== null) {
        return null;
    }
    PersonBean person = personDao.savePerson(firstName,
            lastName);
    return person ;
}

感谢任何帮助。

【问题讨论】:

    标签: java javascript angularjs resteasy


    【解决方案1】:

    您将字段发布为 JSON,而不是表单编码数据。

    headers: {'Content-Type': 'application/json'}
    

    但您不能只更改此标题。这些值需要进行表单编码。请参阅此页面了解如何从 Angular 发布表单数据。

    http://www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm

    不过,您可能会发现坚持使用 JSON 并让您的框架为您将这些字段映射到一个 Bean 会更好。

    我没有使用过 Resteasy,但我认为它应该很简单......

    @POST
    @Path("/savePerson")
    @Consumes("application/json")
    @Produces("application/json")
    @Secured({ "ROLE_USER" })
    public PersonBean savePerson(SavePersonBean savePersonBean) {
        PersonBean person = personDao.savePerson(savePersonBean.getFirstName(),
                savePersonBean.getLastName());
        return person;
    }
    

    【讨论】:

    • 为了澄清,他还必须在方法中添加'@Consumes("application/json")'
    猜你喜欢
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多