JAXFront allows you to overwrite any standard wiget generated by the visualizer factory. Just specify an own plugin class in your XUI for a certain field/block.
As an example see the po.xui in the jaxfront-demo.war. There is a HTML plugin defined for the xpath: /purchaseOrder/shipTo/street:
<component xpath="/purchaseOrder/shipTo/street"> <style> <plugIn class="com.jaxfront.html.plugins.SimpleTypePluginPlainHTMLExampleView"> </plugIn> </style> </component>
The following simple JAXFront HTML plugin just creates a listbox containing three different street names to choose from. As soon as the user selects a street, the value will be updated asynchronously in the server-side existing JAXFront DOM.
public class SimpleTypePluginPlainHTMLExampleView extends SimpleTypeView { protected void createEditorComponent(HtmlContainerWidget container) { _component = new HtmlPlainTextWidget(container, getHTMLContent().toString()); } public void populateView() { super.populateView(); ((HtmlPlainTextWidget)_component).setHTMLContent(getHTMLContent().toString()); } public StringBuffer getHTMLContent() { StringBuffer sb = new StringBuffer(); sb.append("<b>Choose your favorite street!</b><br/><br/>"); sb.append("<select id=\"" + getXPath() + "\" size=\"3\" onclick=\"saveData(this)\">"); String[] names = new String[] { "Nowhere Land", "Palm Street", "Example Street", "Wall Street", "Bahnhof Street" }; String selected = ""; for (int i = 0; i < names.length; i++) { if (getValue() != null && getValue().equals(names[i])) selected = "selected"; else selected = ""; sb.append("<option " + selected + " value=\"" + names[i] + "\">" + names[i] + "</option>"); } sb.append("</select>"); return sb; } public void setSize(String size) { // do nothing }