src/main/java/com/machinezoo/pushmode/dom/DomElement.java
@DraftApi
	public DomElement value(String value, Consumer<String> setter) {
		Objects.requireNonNull(setter);
		if (value == null)
			value = "";
		value(value);
		subscribe(new ValueBinding(value, setter));
		oninput((Runnable)null);
		return this;
	}
/**
	 * Sets up two-way binding on attribute {@code value}.
	 * Changes in the attribute are synchronized both ways between the client and the server.
	 * When parameter {@code value} changes between two invocations of {@link PushPage#document()}, the change is sent to the client.
	 * When user's actions cause the browser to change client-side value of the attribute,
	 * PushMode javascript sends the change to the server, which then invokes callback specified in {@code setter} parameter.
	 * <p>
	 * When {@code setter} completes, the next invocation of {@link PushPage#document()}
	 * should set {@code value} parameter to the same value that was passed to the {@code setter}.
	 * If the value is different, PushMode assumes that {@code setter} has performed coercion of the value.
	 * Coerced value is then sent to the client where it replaces user's input.
	 * <p>
	 * Bindings require {@link DomElement#id()} to be set. Bindings on elements with {@code null} ID are ignored.
	 *
	 * @param value
	 *            Server-supplied value of the attribute.
	 *            If {@code null}, empty string is substituted by this method.
	 * @param setter
	 *            Callback accepting the most recent value available on the client side.
	 * @return {@code this}
	 * @throws NullPointerException
	 *             The {@code setter} parameter is {@code null}.
	 */
Sets up two-way binding on attribute  value.
Changes in the attribute are synchronized both ways between the client and the server.
When parameter  value changes between two invocations of  PushPage#document(), the change is sent to the client.
When user's actions cause the browser to change client-side value of the attribute,
PushMode javascript sends the change to the server, which then invokes callback specified in  setter parameter.

When  setter completes, the next invocation of  PushPage#document()
should set  value parameter to the same value that was passed to the  setter.
If the value is different, PushMode assumes that  setter has performed coercion of the value.
Coerced value is then sent to the client where it replaces user's input.

Bindings require  DomElement#id() to be set. Bindings on elements with  null ID are ignored.

@param value
Server-supplied value of the attribute.
If  null, empty string is substituted by this method.
@param setter
Callback accepting the most recent value available on the client side.
@return  this
@throws NullPointerException
The  setter parameter is  null.
Sets up two - way binding on attribute value . Changes in the attribute are synchronized both ways between the client and the server . When parameter value changes between two invocations of PushPage#document () the change is sent to the client . When user ' s actions cause the browser to change client - side value of the attribute PushMode javascript sends the change to the server which then invokes callback specified in setter parameter . When setter completes the next invocation of PushPage#document () should set value parameter to the same value that was passed to the setter . If the value is different PushMode assumes that setter has performed coercion of the value . Coerced value is then sent to the client where it replaces user ' s input . Bindings require DomElement#id () to be set . Bindings on elements with null ID are ignored . @param value Server - supplied value of the attribute . If null empty string is substituted by this method . @param setter Callback accepting the most recent value available on the client side . @return this @throws NullPointerException The setter parameter is null .
@DraftApi
	public DomElement value(String value, Consumer<String> setter) {
		Objects.requireNonNull(setter);
		if (value == null)
			value = "";
		value(value);
		subscribe(new ValueBinding(value, setter));
		oninput((Runnable)null);
		return this;
	}
@ DraftApi public DomElement value ( String value , Consumer < String > setter ) { Objects . requireNonNull ( setter ) ; if ( value == null ) value = "" ; value ( value ) ; subscribe ( new ValueBinding ( value , setter ) ) ; oninput ( ( Runnable ) null ) ; return this ; }
Sets up two-way binding on attribute {@code value}.
Sets up two - way binding on attribute { @code value } .