Использование Ajax для отправки var в запрос - PullRequest
0 голосов
/ 05 декабря 2018

Я использую POST, чтобы получить данные из события нажатия, используя angularjs.Я думаю, что у меня большая часть кода написана, но я получаю сообщение об ошибке «Недопустимый символ» при выполнении запроса.Я думаю, что это может иметь какое-то отношение к преобразованию типов, когда я беру переменную из JavaScript.

это мой пост для моего java файла

@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(int jobId) throws IOException{
    try (Dbc dbc = vehmPool.getDbc()){
        List<ModuleProcCount> pusher = statements.inMod(dbc, jobId);
        return pusher;
    } 
}

Здесь функция или мой пост

$scope.sendJobId = function(jobId) {    
        $http.post("rest/performance/module", jobId).then(function(response){
            $scope.pusher = response.data;

            for (var i = 0; i < $scope.pusher.length; i++) {
                var p = $scope.puller[i];
                console.log("modName: " + p.modName);
                console.log("modClass: " + p.cellClass);
                console.log("modData: " + p.modCount);
        }
    });

Вот мой HTML с угловым кодом в нем.

<table id="Table" class="JobID-table" style="text-align:center" >
    <tr class="table-Header">
        <th>JOB ID</th>
        <th>TIME FOR ALL MODULES(MILLISECONDS)</th> 
    </tr>
    <tr class="jobID-Table-tr" ng-repeat="p in puller | orderBy : '-modCount'"> 
        <td ng-click="sendJobId(p.modName)" class={{p.cellClass}}>
        {{p.modName}}   
        </td>
        <td class={{p.cellClass}}>
        {{p.modCount}}
        </td>
    </tr>
</table> 

1 Ответ

0 голосов
/ 05 декабря 2018

Ваш метод Java настроен на использование JSON (@Consumes(MediaType.APPLICATION_JSON)).Это означает, что JAX-RS пытается проанализировать тело вашего запроса POST в объект JSON, а затем сопоставить его с типом параметра вашей функции-потребителя, в данном случае String.

Поскольку вы на самом деле неотправляя объект JSON с вашим запросом POST, вы должны сообщить JAX-RS, что вы хотите получить необработанный текст из полезной нагрузки:

@Consumes(MediaType.TEXT_PLAIN)

В качестве альтернативы, вы можете использовать JSON!Поскольку вы упоминаете, что ваш параметр является целым числом, в этом примере используется объект JSON с одним целочисленным параметром с именем jobId:

/**
 * This class is used by JAX-RS to parse to and from JSON. The field
 * names used here (and by extension the getters and setters) should
 * match those used in your JSON.
 */
class InputRequest {
    int jobId;

    public String getJobId() {
        return jobId;
    }

    public void setJobId(int jobId) {
        this.jobId = jobId;
    }
}

@POST
@Path("module")
@Consumes(MediaType.APPLICATION_JSON)
public List<ModuleProcCount> getInput(InputRequest reqPayload) throws IOException {
    int jobId = reqPayload.getJobId();
}

На стороне клиента angular автоматически преобразует объект, переданный для полезной нагрузки, вСтрока JSON и устанавливает для вас заголовок Content-type ( ref ).

$http.post('rest/performance/module', {
  jobId: 123456
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...