@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
当我从@post注释的方法返回一个url字符串时。
post方法的返回类型是String,那为什么期待一个Reply?
请注意,我的编码get方法需要@Service,它将回复JSON。
答案 0 :(得分:1)
它给出ClassCastException的原因是Sitebricks API在某些时候会在您的类中看到@Service -annotation并采取相应的行动。它将获取返回的对象(在您的情况下为java.lang.String)并尝试将其转换为com.google.sitebricks.headless.Reply
为了达到你想要的效果,你应该返回以下内容:
return Reply.saying().redirect("/servlet");
这就是使用Reply API进行重定向的方法。