2013-06-17 2 views
0
@At("/notes") @Service 
public class NotebookService { 

    private Note note =new Note(); 

    public NotebookService(){ 
     ObjectifyService.register(Note.class); 
    } 

    public Note getNote() { 
     return note; 
    } 

    public void setNote(Note note) { 
     this.note = note; 
    } 

    @Post 
    public String postNote(){ 
     note.setDate(new Date()); 
     Objectify objectify=ObjectifyService.ofy(); 
     objectify.save().entities(note).now(); 
     return "/servlet"; 
    } 
} 

Он бросает java.lang.ClassCastException: java.lang.String не может быть приведен к com.google.sitebricks.headless.Reply , когда я возвращаю строку URL-адрес из метод, аннотированный с помощью @post. Тип возврата метода post - String, то почему он ожидает ответа?ClassCastException при возвращении перенаправления URL из метода после

Обратите внимание, что @Service требуется для моего еще не закодированного метода get, который ответит JSON.

ответ

1

Причина, по которой он дает исключение ClassCastException, заключается в том, что API Sitebricks в какой-то момент будет видеть @Service -nnotation в вашем классе и действовать соответствующим образом. Он возьмет возвращаемый объект (в вашем случае java.lang.String) и попробует отправить его на com.google.sitebricks.headless.Reply

Для достижения того, что вы хотите, вы должны вместо этого вернуть следующие:

return Reply.saying().redirect("/servlet"); 

Так вы делаете перенаправление с помощью API-ответа.

+0

Да, я понял, что позже после комментария автора в Google Groups. Благодарю. – SoulMan

 Смежные вопросы

  • Нет связанных вопросов^_^