Rich Formatted Selection Box
In this example, the textfield looks up the telephone book for matching phone numbers
- The number is displayed together with the name but only the number is inserted on select
- If more than 6 results are found in the phonebook, there is one last unselectable (informal) row, informing about how much more matching results are found in the phonebook
- If there is only one result, there is a different presentation including the person's age
(TelephoneBook.java, TelephoneBookEntry and phonebook.txt are some helper classes / ressource, that are used in the examples to AjaxTextField)
Note
This is static documentation.
You can see this example live
Screenshots
Formatted.html
<form jwcid="@Form" listener="listener:onSubmit">
<input type="text" jwcid="@sotacs:AjaxTextField" value="ognl:''"
size="10"
items="items:phoneBookEntries" renderer="normal,more!,singleResult" />
</form>
<table jwcid="@Block" >
<tr jwcid="normal@Any">
<td>{0}</td><td>{1} {2}</td>
</tr>
<tr jwcid="more@Any">
<td colspan="2"><span style="color: green;">{0} more results...</span></td>
</tr>
<tr jwcid="singleResult@Any">
<td><table>
<tr><td colspan="2" style="background: white;font-size:18pt;"
align="center"><b>{0}</b></td></tr>
<tr><td>First Name : </td><td><b>{1}</b></td></tr>
<tr><td>Last Name : </td><td><b>{2}</b></td></tr>
<tr><td>Age : </td><td><b>{3}</b></td></tr>
</table></td>
</tr>
</table>
Formatted.java
public abstract class Formatted extends BasePage {
public void phoneBookEntries(ItemWriter writer, String prefix) {
prefix = prefix.trim();
if(prefix.length() == 0) return;
List<TelephoneBookEntry> results =
TelephoneBook.getInstance().getEntries(TelephoneEntryField.PHONE, prefix);
if(results.size() == 1){
//singleResult
TelephoneBookEntry entry = results.get(0);
writer.writeTypedItem("singleResult",
entry.getTelephone(), entry.getFirstName(),
entry.getName(), ""+entry.getAge());
return;
}
int z = 0;
for (TelephoneBookEntry entry : results) {
if(z++ == 6){
writer.writeTypedItem("more",String.valueOf(results.size() - 6));
return;
}
writer.writeTypedItem("normal",entry.getTelephone(),
entry.getFirstName(), entry.getName());
}
}
}
