use of org.apache.tapestry5.services.javascript.JavaScriptSupport in project flowlogix by flowlogix.
the class DisableAfterSubmit method enableSubmitProcessing.
public static void enableSubmitProcessing(ClientElement clientElement, FormSupport fs, JavaScriptSupport js) {
JSONObject spec = new JSONObject();
spec.put("elementId", clientElement.getClientId());
spec.put("formId", fs.getClientId());
js.addInitializerCall("disableAfterSubmit", spec);
}
use of org.apache.tapestry5.services.javascript.JavaScriptSupport in project tapestry-5 by apache.
the class AnyTest method render_simple.
@Test
public void render_simple() {
ComponentResources resources = mockComponentResources();
JavaScriptSupport support = mockJavaScriptSupport();
MarkupWriter writer = new MarkupWriterImpl(new DefaultMarkupModel());
resources.renderInformalParameters(writer);
replay();
Any component = new Any();
component.inject(support, resources, "span", "foo");
component.beginRender(writer);
writer.write("content");
component.afterRender(writer);
assertEquals(writer.toString(), "<span>content</span>");
verify();
}
use of org.apache.tapestry5.services.javascript.JavaScriptSupport in project tapestry-5 by apache.
the class AnyTest method render_with_id.
@Test
public void render_with_id() {
ComponentResources resources = mockComponentResources();
JavaScriptSupport support = mockJavaScriptSupport();
MarkupWriter writer = new MarkupWriterImpl(new DefaultMarkupModel());
resources.renderInformalParameters(writer);
String clientId = "bar";
String uniqueId = "bar_0";
expect(support.allocateClientId(clientId)).andReturn(uniqueId);
replay();
Any component = new Any();
component.inject(support, resources, "div", clientId);
component.beginRender(writer);
writer.write("content");
component.afterRender(writer);
assertEquals(writer.toString(), "<div>content</div>");
assertEquals(component.getClientId(), uniqueId);
assertEquals(writer.toString(), "<div id=\"bar_0\">content</div>");
assertEquals(component.getClientId(), uniqueId);
verify();
}
use of org.apache.tapestry5.services.javascript.JavaScriptSupport in project tapestry-5 by apache.
the class AnyTest method attempt_to_get_client_id_before_render.
@Test
public void attempt_to_get_client_id_before_render() {
ComponentResources resources = mockComponentResources();
JavaScriptSupport support = mockJavaScriptSupport();
train_getCompleteId(resources, "Foo/bar.baz");
replay();
Any component = new Any();
component.inject(support, resources, "div", null);
try {
component.getClientId();
unreachable();
} catch (IllegalStateException ex) {
assertEquals(ex.getMessage(), "Unable to provide client id for component Foo/bar.baz as it has not yet rendered.");
}
verify();
}
use of org.apache.tapestry5.services.javascript.JavaScriptSupport in project tapestry-5 by apache.
the class Form method beginRender.
void beginRender(MarkupWriter writer) {
Link link = resources.createFormEventLink(EventConstants.ACTION, context);
String actionURL = secure && secureEnabled ? link.toAbsoluteURI(true) : link.toURI();
actionSink = new ComponentActionSink(logger, clientDataEncoder);
clientId = javascriptSupport.allocateClientId(resources);
// Pre-register some names, to prevent client-side collisions with function names
// attached to the JS Form object.
IdAllocator allocator = new IdAllocator();
preallocateNames(allocator);
formSupport = createRenderTimeFormSupport(clientId, actionSink, allocator);
environment.push(FormSupport.class, formSupport);
environment.push(ValidationTracker.class, tracker);
if (autofocus) {
ValidationDecorator autofocusDecorator = new AutofocusValidationDecorator(environment.peek(ValidationDecorator.class), tracker, javascriptSupport);
environment.push(ValidationDecorator.class, autofocusDecorator);
}
// Now that the environment is setup, inform the component or other
// listeners that the form
// is about to render.
resources.triggerEvent(EventConstants.PREPARE_FOR_RENDER, context, null);
resources.triggerEvent(EventConstants.PREPARE, context, null);
// Push BeanValidationContext only after the container had a chance to prepare
environment.push(BeanValidationContext.class, new BeanValidationContextImpl(validate));
// Save the form element for later, in case we want to write an encoding
// type attribute.
form = writer.element("form", "id", clientId, "method", "post", "action", actionURL, "data-update-zone", zone, DATA_ATTRIBUTE, DATA_ATTRIBUTE_VALUE);
if (clientValidation != ClientValidation.NONE) {
writer.attributes("data-validate", "submit");
}
if (async) {
javascriptSupport.require("t5/core/zone");
writer.attributes("data-async-trigger", true);
}
resources.renderInformalParameters(writer);
div = writer.element("div");
for (String parameterName : link.getParameterNames()) {
String[] values = link.getParameterValues(parameterName);
for (String value : values) {
// but the input value shouldn't be encoded.
try {
value = URLDecoder.decode(value, "UTF-8");
} catch (UnsupportedEncodingException e) {
logger.error("Enable to decode parameter value for parameter {} in form {}", parameterName, form.getName(), e);
}
writer.element("input", "type", "hidden", "name", parameterName, "value", value);
writer.end();
}
}
// div
writer.end();
environment.peek(Heartbeat.class).begin();
}
Aggregations