I was just trying different things tonight and oh my gosh, I found a combination that works. If I change the UIRptTableColHdr class to extend UIComponentBase instead of HtmlDataTable it worked. Does this help someone figure out the problem? I don't know if it is a bug in the RI or if I was just extending the wrong class. Any ideas?
Thanks, Ray --- Ray Clark <[EMAIL PROTECTED]> wrote: > Ok here goes. > > What I have is a set of 5 custom tags to output a > <table> with its associated tags. I've boiled it > down > about as far as it can go. The commandButton would > go > in the col tag. If it is just in the col tag by > itself, it works fine. If it is in a col tag inside > a > row tag it works fine. But if it is in a col tag > inside a row tag inside a colHdr tag, it fails. > What > happens is, when it fails, all phases are executed, > but the method isn't called. I haven't include the > tag that outputs the <table> tag and another tag. > They don't seem to make any difference in the > execution. So this is about as trimmed down as I > can > make it I think. > > I really appreciate your help. Let me know if you > need anything else. > > Here is the jsp: > > <%@ taglib uri="http://java.sun.com/jsf/html" > prefix="h"%> > <%@ taglib uri="http://java.sun.com/jsf/core" > prefix="f"%> > <%@ taglib uri="/WEB-INF/tld/customjsf.tld" > prefix="cjsf" %> > > <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 > transitional//en"> > > <html> > <f:view> > <head><title>Sample page to test commandButton > inside custom tags</title></head> > <body> > <h:form id="tblmaintForm"> > <h:panelGrid columns="1"> > <cjsf:col> > <h:commandButton > action="#{allAuthUser.sortAppIdAscButton}" value="1 > works"/> > </cjsf:col> > <cjsf:row> > <cjsf:col> > <h:commandButton > action="#{allAuthUser.sortAppIdAscButton}" value="2 > works"/> > </cjsf:col> > </cjsf:row> > <cjsf:colHdr> > <cjsf:row> > <cjsf:col> > <h:commandButton > action="#{allAuthUser.sortAppIdAscButton}" value="3 > fails"/> > </cjsf:col> > </cjsf:row> > </cjsf:colHdr> > </h:panelGrid> > </h:form> > </body> > </f:view> > </html> > > Here are the component classes: > > /* > * Created on Dec 19, 2004 > * > */ > package > com.monsanto.ag_it.fieldops.aim.tblmaint.component; > > import javax.faces.component.UIColumn; > > /** > * @author rcclark > * > * This component implements the RptTableColTag > */ > public class UIRptTableCol extends UIColumn { > > public UIRptTableCol() { > setRendererType("tblmaint.rptTableColRenderer"); > } > } > > /* > * Created on Dec 19, 2004 > * > */ > package > com.monsanto.ag_it.fieldops.aim.tblmaint.component; > > import javax.faces.component.html.HtmlDataTable; > > /** > * @author rcclark > * > * This component implements the RptTableColHdrTag > */ > public class UIRptTableColHdr extends HtmlDataTable > { > > public UIRptTableColHdr() { > > setRendererType("tblmaint.rptTableColHdrRenderer"); > } > } > > /* > * Created on Dec 19, 2004 > * > */ > package > com.monsanto.ag_it.fieldops.aim.tblmaint.component; > > import javax.faces.component.UIOutput; > > /** > * @author rcclark > * > * This component implements the RptTableRowTag > */ > public class UIRptTableRow extends UIOutput { > > public UIRptTableRow() { > setRendererType("tblmaint.rptTableRowRenderer"); > } > } > > Here are the renderers: > > /* > * Created on Dec 19, 2004 > * > */ > package > com.monsanto.ag_it.fieldops.aim.tblmaint.renderer; > > import java.io.IOException; > import java.util.Iterator; > > import javax.faces.component.UIComponent; > import javax.faces.context.FacesContext; > import javax.faces.context.ResponseWriter; > import javax.faces.render.Renderer; > > import > com.monsanto.ag_it.fieldops.aim.tblmaint.component.UIRptTableCol; > import > com.monsanto.ag_it.fieldops.aim.tblmaint.component.UIRptTableColHdr; > > /** > * @author rcclark > * > * Renderer for the RptTableTag > */ > public class RptTableColRenderer extends Renderer { > > private String tagType = null; > > public void encodeBegin(FacesContext context, > UIComponent rptTableCol) > throws IOException { > > // First determine if this is a th or td cell > Object rptTblSection = > rptTableCol.getParent().getParent(); > > tagType = "td"; > if (rptTblSection instanceof UIRptTableColHdr) { > tagType = "th"; > } > > ResponseWriter writer = > context.getResponseWriter(); > > UIRptTableCol rptTblCol = (UIRptTableCol) > rptTableCol; > > writer.write("\t\t\t"); > writer.startElement(tagType, rptTableCol); > > //System.out.println("col id=" + (String) > rptTableCol.getAttributes().get("id")); > // if (!rptTblCol.getId().substring(0, > 3).equals("_id")) { > writer.writeAttribute("id", > rptTblCol.getClientId(context), null); > // } > > String colClass = (String) > rptTableCol.getAttributes().get("colClass"); > if (colClass != null) { > === message truncated === __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com

