Hi yo'all,

I did quite a lot Googling and searched this forum, but still did not find
what I was looking for.
Basically I need to create pages that respond with xml content with
"text/xml" content-type.


In some posts, Igor suggested to overwrite "configureResponse" method. So I
tried the following

    @Override
    protected void configureResponse(WebResponse response) {
        response.setContentType("text/xml");
        super.configureResponse(response);
    }

which does not work. The page response's content-type is still "text/html".


I also tried to overwrite "getMarkupType" method, as shown here

    @Override
    public MarkupType getMarkupType() {
        return new MarkupType("xml", MarkupType.XML_MIME);
    }

which also does not work and throws
"org.apache.wicket.markup.MarkupNotFoundException: Can not determine Markup.
Component is not yet connected to a parent. [Page class = SomePage, id = 3,
render count = 1]".


One user who was asking questions on this forum created the following
article, which could serve my purpose.

http://blog.brunoborges.com.br/2008/11/restful-web-services-with-wicket.html

So I migrated his code to Wicket 1.5, as shown below.

import org.apache.wicket.Component;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.MarkupType;
import org.apache.wicket.markup.html.WebPage;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

/**
 * Created by IntelliJ IDEA.
 * User: Ma Ding
 * Date: 11/9/11
 * Time: 9:46 AM
 */
public class RestXmlPage extends WebPage {

    public RestXmlPage() {
        setStatelessHint(true);
    }

    private CharSequence getXML() {
        return "<top><id><12></id><name>round n round</name></top>";
    }

    @Override
    protected void onRender() {
        try {
            PrintWriter pw = new PrintWriter(((HttpServletResponse)
getResponse().getContainerResponse()).getOutputStream());
            pw.write(getXML().toString());
            pw.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Override
    public MarkupType getMarkupType() {
        return new MarkupType("xml", MarkupType.XML_MIME);
    }

    @Override
    public final boolean hasAssociatedMarkup() {
        return false;
    }

    @Override
    public final Component add(Behavior... behaviors) {
        throw new UnsupportedOperationException(
                "WebServicePage does not support IBehaviours");
    }
}

But this page also throws "org.apache.wicket.markup.MarkupNotFoundException:
Can not determine Markup. Component is not yet connected to a parent."
exception.


Could anyone spare some time and help me with this?
Thanks a lot!

--
View this message in context: 
http://apache-wicket.1842946.n4.nabble.com/Use-Wicket-1-5-to-serve-text-xml-content-type-Rest-style-tp4018490p4018490.html
Sent from the Users forum mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to