Author: craigmcc Date: Tue May 3 22:45:04 2005 New Revision: 168076 URL: http://svn.apache.org/viewcvs?rev=168076&view=rev Log: Deal with problems on components that do not have a specified id not matching on a postback.
PR: Bugzilla #34711 Submitted by: Manfred Klug <manklu AT web.de> Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java Modified: struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java URL: http://svn.apache.org/viewcvs/struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java?rev=168076&r1=168075&r2=168076&view=diff ============================================================================== --- struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java (original) +++ struts/shale/trunk/clay-plugin/src/java/org/apache/shale/clay/component/Clay.java Tue May 3 22:45:04 2005 @@ -132,7 +132,24 @@ * </p> */ private ComponentBean displayElementRoot = null; + + /** + * <p> + * The output from UIViewRoot.createUniqueId() after the + * component tree has been constructed. + */ + private String lastUniqueId = null; + public void setlastUniqueId(String newId) + { + lastUniqueId = newId; + } + + public String getlastUniqueId() + { + return lastUniqueId; + } + /** * <p> * Returns the unique identifier used to build the component subtree @@ -228,7 +245,16 @@ if (log.isTraceEnabled()) log.trace("encodeBegin(FacesContext)"); - if (getDisplayElementRoot() == null) { + if (getDisplayElementRoot() != null) { + // Call UIViewRoot.createUniqueId() until we have reproduced all + // IDs used during construction. + String currId = getFacesContext().getViewRoot().createUniqueId(); + String lastId = this.getlastUniqueId(); + while(!lastId.equals(currId)) { + currId = getFacesContext().getViewRoot().createUniqueId(); + } + } + else { if (!getJsfid().equals(Globals.RUNTIME_ELEMENT_ID)) { displayElementRoot = getRootElement(); } else { @@ -301,6 +327,8 @@ throw new RuntimeException(e); } + setlastUniqueId(getFacesContext().getViewRoot().createUniqueId()); + } super.encodeBegin(context); @@ -402,6 +430,7 @@ managedBeanName = ((String) aobj[2]); shapeValidator = ((String) aobj[3]); displayElementRoot = ((ComponentBean) aobj[4]); + lastUniqueId = ((String)aobj[5]); } @@ -413,12 +442,13 @@ * @see javax.faces.component.StateHolder#saveState(javax.faces.context.FacesContext) */ public Object saveState(FacesContext context) { - Object[] aobj = new Object[5]; + Object[] aobj = new Object[6]; aobj[0] = super.saveState(context); aobj[1] = jsfid; aobj[2] = managedBeanName; aobj[3] = shapeValidator; aobj[4] = displayElementRoot; + aobj[5] = lastUniqueId; return aobj; } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]