`
javadaydayup
  • 浏览: 13847 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

java.lang.ClassCastException: org.restlet.data.Parameter cannot be cast to org.r

阅读更多
Restlet header传参异常:java.lang.ClassCastException: org.restlet.data.Parameter cannot be cast to org.restlet.engine.header

原因:
The object returned by Response/Request.getAttributes().get("org.restlet.http.headers") is a Series<Header>, not a Form, which is a Series<Parameter>. Because of type erasure, there is no runtime problem until the Restlet Engine tries to make use of the Parameter you stored and treat it as a Header.

private static final String HEADERS_KEY = "org.restlet.http.headers";

...

    @SuppressWarnings("unchecked")

    static Series<Header> getMessageHeaders(Message message) {

        ConcurrentMap<String, Object> attrs = message.getAttributes();

        Series<Header> headers = (Series<Header>) attrs.get(HEADERS_KEY);

        if (headers == null) {
            headers = new Series<Header>(Header.class);
            Series<Header> prev = (Series<Header>)
                attrs.putIfAbsent(HEADERS_KEY, headers);
            if (prev != null) { headers = prev; }
        }

        return headers;

    }

...

    // In some method, what you originally wanted to do:
    getMessageHeaders(getResponse()).add("Access-Control-Allow-Origin", "*");
   //or getRequest()
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics