簡體   English   中英

用Java將JSON文件發布到我的REST服務

[英]Post json file to my REST service in java

我正在嘗試從Angular js表單中發布數據,以使用Java的REST服務將其保存到數據庫。 下面是我剩下的代碼

@Stateless
@Path("driverprops")

public class DriverPropFacadeREST extends AbstractFacade<DriverProp> {
    @PersistenceContext(unitName = "com.mycompany_groupProjectBackend_war_1.0-SNAPSHOTPU")
    private EntityManager em;

public DriverPropFacadeREST() {
    super(DriverProp.class);
}

@POST
@Override
@Consumes({ "application/json"})
public void create(DriverProp entity) {
    super.create(entity);
}

她的是我的driverprop班的一部分

import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.xml.bind.annotation.XmlRootElement;



 @Entity
    @Table(name = "DriverProp")
    @XmlRootElement
    @NamedQueries({
        @NamedQuery(name = "DriverProp.findAll", query = "SELECT d FROM   `DriverProp d"),
        @NamedQuery(name = "DriverProp.findByDriverID", query = "SELECT d FROM DriverProp d WHERE d.driverID = :driverID"),
        @NamedQuery(name = "DriverProp.findByGear", query = "SELECT d FROM DriverProp d WHERE d.gear = :gear"),
        @NamedQuery(name = "DriverProp.findByChangeUpRPM", query = "SELECT d FROM DriverProp d WHERE d.changeUpRPM = :changeUpRPM"),
        @NamedQuery(name = "DriverProp.findByChangeDownRPM", query = "SELECT d FROM DriverProp d WHERE d.changeDownRPM = :changeDownRPM"),
        @NamedQuery(name = "DriverProp.findByPreferredMaxRPM", query = "SELECT d FROM DriverProp d WHERE d.preferredMaxRPM = :preferredMaxRPM"),
        @NamedQuery(name = "DriverProp.findByPreferredMinRPM", query = "SELECT d FROM DriverProp d WHERE d.preferredMinRPM = :preferredMinRPM"),
        @NamedQuery(name = "DriverProp.findByDecisionTime", query = "SELECT d FROM DriverProp d WHERE d.decisionTime = :decisionTime"),
        @NamedQuery(name = "DriverProp.findByMaxAccn", query = "SELECT d FROM DriverProp d WHERE d.maxAccn = :maxAccn"),
        @NamedQuery(name = "DriverProp.findByMaxBreaking", query = "SELECT d FROM DriverProp d WHERE d.maxBreaking = :maxBreaking"),
        @NamedQuery(name = "DriverProp.findByMaxStraightSpeed", query = "SELECT d FROM DriverProp d WHERE d.maxStraightSpeed = :maxStraightSpeed"),
        @NamedQuery(name = "DriverProp.findByMaxCornerSpeed", query = "SELECT d FROM DriverProp d WHERE d.maxCornerSpeed = :maxCornerSpeed")})
    public class DriverProp implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "DriverID")
        private Integer driverID;
        @Basic(optional = false)
        @NotNull
        @Column(name = "Gear")
        private int gear;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ChangeUpRPM")
        private float changeUpRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "ChangeDownRPM")
        private float changeDownRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "PreferredMaxRPM")
        private float preferredMaxRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "PreferredMinRPM")
        private float preferredMinRPM;
        @Basic(optional = false)
        @NotNull
        @Column(name = "DecisionTime")

我的問題現在我需要一個有角度的js,它將發送JSON文件,並且應該使用REST服務將JSON保存到數據庫。

您可以使用

有一陣子我使用矩形,效果很好。

Witrh Angular,最簡單的方法是使用$resource 在您的情況下,將是這樣的:

var app = (...)

app.factory('DriverPropFacadeREST', function($resource) {
    return $resource('http://(...)/driverprops/:id', {id:'@id'});
});

app.controller('DriverPropController', function($scope, DriverPropFacadeREST) {
    var inputData = { 'driverID': 'value', (...) };
    DriverPropFacadeREST.save(inputData, function(data) {
        console.log(data);
        (...)
    });
});

有關更多詳細信息,請參見Angular參考文檔中的此鏈接: https : //docs.angularjs.org/api/ngResource/service/ $ resource。

您還可以使用低級API $http ,如下所述:

app.controller('DriverPropController', function($scope, $http) {
    var inputData = { 'driverID': 'value', (...) };
    $http.post('http://(...)/driverprops', inputData)
         .success(function(data, status, headers, config) {
              // this callback will be called asynchronously
              // when the response is available
         })
         .error(function(data, status, headers, config) {
              // called asynchronously if an error occurs
              // or server returns response with an error status.
         });
});

有關更多詳細信息,請參見Angular參考文檔中的此鏈接: https : //docs.angularjs.org/api/ng/service/ $ http#post。

希望對您有幫助,蒂埃里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM