Search code examples
javaparameter-passingtapestry

How to pass parameters to components rendered offline?


I have MyComponent:

public class MyComponent
{
    @Parameter(required = false)
    @Property
    private String testParameter;
}

And I render it offline with the following code:

PageRenderRequestParameters pageRenderRequestParameters = new PageRenderRequestParameters(
            "mycomponent", new ArrayEventContext(this.typeCoercer, ""), false);

StringWriter stringWriter = new StringWriter();
try
{
    this.offlineComponentRenderer.renderPage(stringWriter,
                new DefaultOfflineRequestContext(), pageRenderRequestParameters);
} catch (IOException e)
{
    e.printStackTrace();
}

String htmlOutput = stringWriter.toString();

I don't know how to set the testParameter of MyComponent to imitate the following call:

<t:mycomponent testParameter="something" />

Solution

  • I think you failed to mention that you're using tapestry-offline, a 3rd party tapestry library.

    You will need to create a page which includes the component before it can be rendered. If you want to make the parameter configurable, you will probably bind the property to the page activation context

    Note: If you don't want the page to be visible on your website, you could probably annotate it with WhitelistAccessOnly and tweak the offline request so that it is whitelisted.