A Checkbox component is simply a input type="checkbox".
| Name | Type | Flags | Default | Default Prefix | Since | Description |
|---|---|---|---|---|---|---|
| clientId | String | NOT Allow Null | prop:componentResources.id | literal | The id used to generate a page-unique client-side identifier for the component. If a component renders multiple times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the clientId property. | |
| disabled | boolean | NOT Allow Null | false | prop | If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a disabled field ignores any value in the request when the form is submitted. | |
| label | String | NOT Allow Null | literal | The user presentable label for the field. If not provided, a reasonable label is generated from the component's id, first by looking for a message key named "id-label" (substituting the component's actual id), then by converting the actual id to a presentable string (for example, "userId" to "User Id"). | ||
| value | boolean | Required, NOT Allow Null | prop | The value to be read or updated. If not bound, the Checkbox will attempt to edit a property of its container whose name matches the component's id. |
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<body>
<h1>View Accounts</h1>
<t:form>
<t:checkbox t:id="showall" onclick="this.form.submit();"/> <t:label for="showall"/>
</t:form>
<t:grid t:id="accounts"/>
</body>
</html>
Normally, we should bind the value parameter explicitly; here the component's id, "showAll", matches against a property of the page and the value parameter is automatically bound as a convienience.
A small amount of JavaScript is provided in-line to submit the form when the checkbox is clicked.
All Tapestry form control element components must be enclosed by a Form component.
The Label component is responsible for rendering a <label> element connected to the checkbox. This is good for accessibility, it also provides a larger "target" to click on. The label's text will be "Show All", derived from the property name. Using a Label component is optional but recommended.
public class ViewAccount
{
@Persist
private boolean _showAll;
@Inject
private AccountDAO _accountDAO;
public boolean isShowAll() { return _showAll; }
public void setShowAll(boolean showAll) { _showAll = showAll; }
public List<Account> getAccounts()
{
return _showAll ? _accountDAO.getAllAccounts() : _accountDAO.getActiveAccounts();
}
}The component updates the _showAll field, and that's used to determine which set of accounts should be provided to the Grid component. As always in Tapestry, you must be careful to mark fields persistent if they need to hold their value between the action request (the form submission) and the render request.