возвращаемое значение из контроллера Java - PullRequest
0 голосов
/ 17 ноября 2018

Я новичок в контроллерах Java.Я работаю над платформой Play и пытаюсь вернуть ArrayList из контроллера, и он выдает ошибки.Какой правильный способ сделать это?Мой код прямо ниже.

Еще один вопрос, я хотел бы написать простейшую страницу с угловой функциональностью html и javascript, которая вызывает контроллер платформы Play.Есть ли простая платформа, такая как Play framework, но для лицевой стороны?

этот метод:

public Result getComments(int postId) {        
    ArrayList<Comment> comments = this.commentsDic.getComments(postId);        
    return ok(comments);
}

выдает следующую ошибку:

no suitable method found for ok(java.util.ArrayList<models.Comment>)
method play.mvc.Results.ok(play.twirl.api.Content) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to play.twirl.api.Content)
method play.mvc.Results.ok(java.lang.String) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to java.lang.String)
method play.mvc.Results.ok(com.fasterxml.jackson.databind.JsonNode) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to com.fasterxml.jackson.databind.JsonNode)
method play.mvc.Results.ok(byte[]) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to byte[])
method play.mvc.Results.ok(java.io.InputStream) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to java.io.InputStream)
method play.mvc.Results.ok(java.io.File) is not applicable
  (argument mismatch; java.util.ArrayList<models.Comment> cannot be converted to java.io.File)

и так:

    public ArrayList<Comment> getComments(int postId) {        
    ArrayList<Comment> comments = this.commentsDic.getComments(postId);        
    return comments;
}

выдает эту ошибку:

Cannot use a method returning java.util.ArrayList[models.Comment] as a Handler for requests

, указывая на файл маршрутов в отмеченной строке:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# An example controller showing a sample home page
GET     /                           controllers.HomeController.index
# An example controller showing how to use dependency injection
GET     /count                      controllers.CountController.count
# An example controller showing how to write asynchronous code
GET     /message                    controllers.AsyncController.message

****************the error points on this line:************
GET     /comments                            
controllers.CommentsController.getComments(postId: Integer)

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file                       
controllers.Assets.versioned(path="/public", file: Asset)

Полный код контроллера:

package controllers;

import play.mvc.Controller;
import play.mvc.Result;

import services.CommentsDictionary;
import java.util.ArrayList;
import models.Comment;

import javax.inject.Inject;
import javax.inject.Singleton;

import java.util.List;


@Singleton
public class CommentsController extends Controller {

private final CommentsDictionary commentsDic;

@Inject
public CommentsController() {
   this.commentsDic = new CommentsDictionary();
}


public List<Comment> getComments(int postId) {        
    List<Comment> comments = this.commentsDic.getComments(postId);        
    return comments;
}

}

1 Ответ

0 голосов
/ 19 ноября 2018

Какой тип содержимого HTTP-ответа вы хотите?

Если вы хотите Json, просто верните

ok(play.libs.Json.toJson(comments));

Если вы хотите показать шаблон рендеринга страницы следующим образом:

ok(views.html.yourTemplate.render(comments));

Несколько советов для дальнейшего чтения:

https://www.playframework.com/documentation/2.6.x/JavaActions#Results https://www.playframework.com/documentation/2.5.8/api/java/play/mvc/Results.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...