从post方法返回重定向url时ClassCastException

时间:2013-06-17 13:16:44

标签: web-services servlets sitebricks

@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。

1 个答案:

答案 0 :(得分:1)

它给出ClassCastException的原因是Sitebricks API在某些时候会在您的类中看到@Service -annotation并采取相应的行动。它将获取返回的对象(在您的情况下为java.lang.String)并尝试将其转换为com.google.sitebricks.headless.Reply

为了达到你想要的效果,你应该返回以下内容:

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

这就是使用Reply API进行重定向的方法。