Remove Table Tag for ListBoxes in Read Mode for all instances in one go


1)
package com.uk.oval;

import java.io.IOException;
import java.io.Writer;
import javax.faces.component.UIComponent;
import com.ibm.xsp.component.xp.XspSelectOneMenu;
import javax.faces.context.FacesContext;
import com.ibm.xsp.renderkit.html_basic.MenuRenderer;

public class SelectOneRenderer extends MenuRenderer {

	public void encodeEnd(FacesContext context, UIComponent component)
			throws IOException {
		Writer writer = context.getResponseWriter();
		XspSelectOneMenu obj = (XspSelectOneMenu) component;
		//if in read mode just print out the value
		if (obj.isReadonly()) {
			writer.write(obj.getValue().toString());
		} else {
			//if in edit mode then call the parent method to output as normal
			super.encodeEnd(context, component);
		}
	}
}


2)
 <render-kit>
    <renderer>
      <component-family>javax.faces.SelectOne</component-family>
      <renderer-type>com.uk.oval.type.SelectOneRenderer</renderer-type>
      <renderer-class>com.uk.oval.SelectOneRenderer</renderer-class>
    </renderer>
    </render-kit>

3)
<control>
		<name>ComboBox</name>
		<property>
			<name>rendererType</name>
			<value>com.uk.oval.type.SelectOneRenderer</value>
		</property>
	</control>

All code submitted to OpenNTF XSnippets, whether submitted as a "Snippet" or in the body of a Comment, is provided under the Apache License Version 2.0. See Terms of Use for full details.
1 comment(s)Login first to comment...
Oliver Busse
(at 12:35 on 27.08.2013)
This is awesome - BUT: for me this results in a disabled select control instead of a plain text value in read mode. Environment: Domino 9, Web client as well as XPiNC. Any hints to achieve a plain text display here?