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
} 
  • Keine Stichwörter