Java服务400错误的请求错误

西西姆

尊敬的Java专业人士

请帮我解决这个问题:我在春天有一个定制服务,运行我的wildfly服务器上没有任何错误。但是当我执行以下更新请求时,尽管我发送了控制器中指定的格式,但我收到了400错误的请求

在我的控制器内:

@RequestMapping(value = "/user/updatefilters/{Id}", method = RequestMethod.POST)
    public Response updateFilter(@PathVariable("Id") Long Id, @RequestBody @Valid Filter Filter) {

        FilterService.updateFilter(Id, Filter);

        HashMap<String, Object> response = new HashMap<>();
        response.put("messages", null);
        response.put("success", Boolean.valueOf(true));
        return Response.instance().friendlyName("filter-updated").object(response).statusCode(HttpStatus.OK);
}

在我的服务文件中:

public void updateFilter(Long Id,Filter Filter) {
    List<Filter> currentFilter = FilterRepo.getFilters(Id, Filter.getFilterId().longValue(),null);
    currentFilter.get(0).setLabel(Filter.getLabel());
    FilterRepo.save(currentFilter.get(0));

    for (FilterField FilterField : Filter.getFilterFields()) {
        FilterField currentFilterField = FilterFieldRepo.getFilterField(FilterField.getfieldId());
        if (currentFilterField != null) {
            currentFilterField.setfield(FilterField.getfield());
            currentFilterField.setTypeId(FilterField.getTypeId());
            FilterFieldRepo.save(currentFilterField);
        }           
    }   
}

在我的存储库中:

public List<Filter> getFilterList(Long Id, String type) {
    List<Filter> FilterField = FilterFieldRepo.getFilterFields(Id,type);
    return FilterField;
}   

public void updateFilter(Long Id,Filter Filter) {
    List<Filter> currentFilter = FilterRepo.getFilters(Id, Filter.getFilterId().longValue(),null);
    currentFilter.get(0).setLabel(Filter.getLabel());
    FilterRepo.save(currentFilter.get(0));

    for (FilterField FilterField : Filter.getFilterFields()) {
        FilterField currentFilterField = FilterFieldRepo.getFilterField(FilterField.getfieldId());
        if (currentFilterField != null) {
            currentFilterField.setfield(FilterField.getfield());
            currentFilterField.setTypeId(FilterField.getTypeId());
            FilterFieldRepo.save(currentFilterField);
        }           
    }   
}

请注意,在我的实体内部,我添加了一个临时列表,如下所示:

@Transient
private List<FilterField> filterFields;

更新:这是我的过滤器类,我在netbeans中生成了crud,但是手动添加了transuent列表:

@Entity
@Table(schema="hitmeister",name = "filters")
@NamedQueries({
    @NamedQuery(name = "Filter.findAll", query = "SELECT s FROM Filter s"),
    @NamedQuery(name = "Filter.findByFilterId", query = "SELECT s FROM Filter s WHERE s.filterId = :filterId"),
    @NamedQuery(name = "Filter.findById", query = "SELECT s FROM Filter s WHERE s.Id = :Id"),
    @NamedQuery(name = "Filter.findByLabel", query = "SELECT s FROM Filter s WHERE s.label = :label"),
    @NamedQuery(name = "Filter.findByInsertionDate", query = "SELECT s FROM Filter s WHERE s.insertionDate = :insertionDate"),
    @NamedQuery(name = "Filter.findByIsActive", query = "SELECT s FROM Filter s WHERE s.isActive = :isActive"),
    @NamedQuery(name = "Filter.findByType", query = "SELECT s FROM Filter s WHERE s.type = :type")})
public class Filter implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "filter_id")
    private Integer filterId;
    @Basic(optional = false)
    @NotNull
    @Column(name = "id")
    private int Id;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 500)
    @Column(name = "label")
    private String label;
    @Basic(optional = true)
    @Column(name = "insertion_date")
    @Temporal(TemporalType.TIMESTAMP)
    private Date insertionDate;
    @Column(name = "is_active")
    private Boolean isActive;
    @Basic(optional = false)
    @NotNull
    @Size(min = 1, max = 20)
    @Column(name = "type")
    private String type;

    @Transient
    private List<FilterField> filterFields;

    public Filter() {
    }

    public Filter(Integer filterId) {
        this.filterId = filterId;
    }

    public Filter(Integer filterId, int Id, String label, Date insertionDate, String type) {
        this.filterId = filterId;
        this.Id = Id;
        this.label = label;
        this.insertionDate = insertionDate;
        this.type = type;
    }

    public Integer getFilterId() {
        return filterId;
    }

    public void setFilterId(Integer filterId) {
        this.filterId = filterId;
    }

    public int getId() {
        return Id;
    }

    public void setuserId(int Id) {
        this.userId = userId;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public Date getInsertionDate() {
        return insertionDate;
    }

    public void setInsertionDate(Date insertionDate) {
        this.insertionDate = insertionDate;
    }

    public Boolean getIsActive() {
        return isActive;
    }

    public void setIsActive(Boolean isActive) {
        this.isActive = isActive;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (filterId != null ? filterId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Filter)) {
            return false;
        }
        Filter other = (Filter) object;
        if ((this.filterId == null && other.filterId != null) || (this.filterId != null && !this.filterId.equals(other.filterId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return " Filter #"+ filterId ;
    }

    public List<FilterField> getFilterFields() {
        return filterFields;
    }

    public void setFilterFields(List<FilterField> filterFields) {
        this.filterFields = filterFields;
    }


}

如果您需要我的实体代码,我也可以发布它。谢谢!

哈格罗瓦尔

我的第一个建议: (OP尝试过,但是没有用,她正在发送POST请求)

如下更改映射,我认为应该没问题。来自浏览器地址栏的请求是GET请求。

如下所示,当服务器无法理解客户端正在发送的请求时,HTTP 400出现了,在您的情况下,您正在发送GET,但是服务器除了POST之外没有其他用于GET的消息,所以返回400。

W3C HTTP 400

10.4.1 400错误的请求

由于语法格式错误,服务器无法理解该请求。客户不应在没有修改的情况下重复请求。

代码修复:

@RequestMapping(value = "/user/updatefilters/{Id}", method = RequestMethod.GET)


我的第二个建议:

我不是Spring专家,但是这是我的2美分,您可以根据提供的JSON对象和您的Filter映射进行尝试-(1.)更改userIdId(2.)insertionDate以NULL代替,而不是空字符串。

确保您的JSON字符串变量与Filter类映射区分大小写,并且它们的值与引用类型兼容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

错误“远程服务器返回错误:(400)错误的请求”

来自分类Dev

错误的请求错误 400

来自分类Dev

Xamarin Google Play地图服务错误400错误的请求

来自分类Dev

远程服务器返回错误 (400) 错误请求

来自分类Dev

AJAX错误:400错误的请求

来自分类Dev

烧瓶错误请求错误 400

来自分类Dev

python请求400错误

来自分类Dev

$ .ajax 400错误请求

来自分类Dev

Angularjs错误请求(400)

来自分类Dev

HTTP请求:400错误

来自分类Dev

Ajax 400 错误请求

来自分类Dev

IIS托管的WCF服务返回HTTP 400错误请求

来自分类Dev

Undertow核心HTTPS服务器发出400错误请求

来自分类Dev

请求库的错误请求错误 400

来自分类Dev

VB 获取 Json 文件错误:“远程服务器返回错误:(400) 错误请求。”

来自分类Dev

PHP fsockopen 400错误请求

来自分类Dev

文件上传-错误的请求(400)

来自分类Dev

调试400错误请求响应

来自分类Dev

RestApi的NelmioApiDoc错误请求400

来自分类Dev

解析400错误请求setACL

来自分类Dev

Firebase Hosting 400错误请求

来自分类Dev

HttpListener返回错误请求400

来自分类Dev

POST 400错误,ajax请求

来自分类Dev

Flask - Postgres 400 错误请求

来自分类Dev

无法上传到Azure Blob存储:远程服务器返回错误:(400)错误的请求

来自分类Dev

目录api的gsuite服务帐户返回http 400错误:错误的请求/无效的输入

来自分类Dev

Docusign上传api调用返回远程服务器返回错误:(400)错误的请求

来自分类Dev

C# WCF“System.Net.WebException:远程服务器返回错误:(400) 错误请求。”

来自分类Dev

ALM Rest API:站点会话返回“远程服务器返回错误:(400) 错误请求。”

Related 相关文章

热门标签

归档