/** * Forces a client element to render its client id by ensuring that * {@link org.apache.tapestry5.ClientElement#getClientId() ClientElement#getClientId()} * is called. This is sometimes needed because, by design, most components (those that * implement {@link ClientElement}) only render a client-side ID if their getClientId * method is called sometime during the server-side DOM render. * * See the {@link org.apache.tapestry5.corelib.components.Any Any} component * for an example of use. * * @tapestrydoc */ public class RenderClientId { @InjectContainer private ClientElement element; @AfterRender void ensureId() { element.getClientId(); } }
public class ForceId { @InjectContainer private ClientElement container; void afterRender() { container.getClientId(); } }
public class OverridenMixin { @InjectContainer private ClientElement clientElement; void afterRender(MarkupWriter writer) { final Element element = writer.getDocument().getElementById(clientElement.getClientId()); element.element("span", "id", "overridenMixin").text(" [Overriden mixin]"); } }
/** * Renders an "disabled" attribute if the containing component {@link Field#isDisabled() is disabled}. * * @tapestrydoc */ @MixinAfter public class RenderDisabled { @InjectContainer private Field field; void beginRender(MarkupWriter writer) { if (field.isDisabled()) writer.attributes("disabled", "disabled"); } }
@MixinAfter public class OverrideMixin { @InjectContainer private ClientElement clientElement; void afterRender(MarkupWriter writer) { final Element element = writer.getDocument().getElementById(clientElement.getClientId()); element.element("span", "id", "overrideMixin").text(" [Override mixin]"); } }
@InjectContainer private Field container;
@InjectContainer private ClientElement element;
@Import(stylesheet = "${jquery.assets.root}/vendor/mixins/jscrollpane/jquery.jscrollpane.css") public class JScrollPane { /** * The JSON parameter for your widget */ @Parameter(defaultPrefix=BindingConstants.LITERAL) private JSONObject options; @InjectContainer private ClientElement clientElement; @Inject private JavaScriptSupport js; void afterRender() { if(options == null) options = new JSONObject(); JSONObject opt = new JSONObject(); opt.put("id", clientElement.getClientId()); opt.put("params", options); js.require("tjq/jscrollpane").with(opt); } }
@InjectContainer private Form form;
/** * Mixin demonstrating the use of BindParameter, using explicit naming of the parent parameter. */ public class EchoValue3 { @BindParameter(value = {"object","value"}) private Object boundParameter; @InjectContainer private ClientElement element; private Object temp; void beginRender(MarkupWriter writer) { writer.element("div","id",element.getClientId() + "_before3"); writer.writeRaw("echo3-" + boundParameter + "-before"); writer.end(); temp = boundParameter; boundParameter = "world"; } void afterRender(MarkupWriter writer) { boundParameter = temp; writer.element("div","id",element.getClientId() + "_after3"); writer.writeRaw("echo3-" + boundParameter + "-after"); writer.end(); } }
private Object boundParameter; @InjectContainer private ClientElement element;
@InjectContainer private Component component;
private String text; @InjectContainer private ClientElement element;
@InjectContainer private Component container;
@InjectContainer private ClientElement element;
public class InitialSort { @InjectContainer private Grid grid; @Parameter(required=true,allowNull=false,defaultPrefix = BindingConstants.LITERAL,name="column") private String sortColumn; @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL,name="order") private ColumnSort sortOrder = ColumnSort.ASCENDING; @SetupRender void setupRender() { GridSortModel sortModel = grid.getSortModel(); if (sortModel.getSortConstraints().isEmpty()) { while (sortModel.getColumnSort(sortColumn) != sortOrder) { sortModel.updateSort(sortColumn); } } } }
/** * Used to test https://issues.apache.org/jira/browse/TAP5-1680. */ @MixinAfter public class AltTitle { @InjectContainer private ClientElement container; @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL) private String title; void afterRender() { container.getClientId(); } void beginRender(MarkupWriter writer) { writer.attributes("alt", title); } }
private RenderSupport renderSupport; @InjectContainer private ClientElement element;
private Request request; @InjectContainer private ClientElement clientElement;
private TypeCoercer coercer; @InjectContainer private ClientElement field;