Author: knopp
Date: Wed Jul 2 04:33:18 2008
New Revision: 673363
URL: http://svn.apache.org/viewvc?rev=673363&view=rev
Log:
WICKET-1725
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java?rev=673363&r1=673362&r2=673363&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/Component.java Wed Jul
2 04:33:18 2008
@@ -1647,7 +1647,7 @@
// Get converter
final Class<?> objectClass = modelObject.getClass();
- final IConverter<Object> converter =
(IConverter<Object>) getConverter(objectClass);
+ final IConverter<Object> converter =
(IConverter<Object>)getConverter(objectClass);
// Model string from property
final String modelString =
converter.convertToString(modelObject, getLocale());
@@ -2139,11 +2139,20 @@
}
/**
- * Sets the RENDERING flag on component and it's children.
+ * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+ *
+ * Sets the RENDERING flag and removes the PREPARED_FOR_RENDER flag on
component and it's
+ * children.
+ *
+ * @param setRenderingFlag
+ * if this is false only the PREPARED_FOR_RENDER flag is
removed from component, the
+ * RENDERING flag is not set.
+ *
+ * @see #prepareForRender(boolean)
*/
- public final void markRendering()
+ public final void markRendering(boolean setRenderingFlag)
{
- internalMarkRendering();
+ internalMarkRendering(setRenderingFlag);
}
/**
@@ -2209,8 +2218,14 @@
*
* Prepares the component and it's children for rendering. On whole
page render this method must
* be called on the page. On AJAX request, this method must be called
on updated component.
+ *
+ * @param setRenderingFlag
+ * Whether to set the rendering flag. This must be true if
the page is about to be
+ * rendered. However, there are usecases to call this method
without an immediate
+ * render (e.g. on stateless listner request target to build
the component
+ * hierarchy), in that case setRenderingFlag should be false
*/
- public final void prepareForRender()
+ public final void prepareForRender(boolean setRenderingFlag)
{
beforeRender();
List<Component> feedbacks =
getRequestCycle().getMetaData(FEEDBACK_LIST);
@@ -2223,7 +2238,7 @@
}
}
getRequestCycle().setMetaData(FEEDBACK_LIST, null);
- markRendering();
+ markRendering(setRenderingFlag);
// check authorization
// first the component itself
@@ -2232,6 +2247,17 @@
}
/**
+ * THIS METHOD IS NOT PART OF THE WICKET PUBLIC API. DO NOT USE IT!
+ *
+ * Prepares the component and it's children for rendering. On whole
page render this method must
+ * be called on the page. On AJAX request, this method must be called
on updated component.
+ */
+ public final void prepareForRender()
+ {
+ prepareForRender(true);
+ }
+
+ /**
* Redirects browser to an intermediate page such as a sign-in page.
The current request's url
* is saved for future use by method continueToOriginalDestination();
Only use this method when
* you plan to continue to the current url at some later time;
otherwise just use
@@ -2344,7 +2370,7 @@
markupIndex = markupStream.getCurrentIndex();
}
- markRendering();
+ markRendering(true);
setMarkupStream(markupStream);
@@ -2935,7 +2961,7 @@
@SuppressWarnings("unchecked")
public final Component setDefaultModelObject(final Object object)
{
- final IModel<Object> model = (IModel<Object>) getDefaultModel();
+ final IModel<Object> model = (IModel<Object>)getDefaultModel();
// Check whether anything can be set at all
if (model == null)
@@ -4103,10 +4129,14 @@
/**
*
*/
- void internalMarkRendering()
+ void internalMarkRendering(boolean setRenderingFlag)
{
setFlag(FLAG_PREPARED_FOR_RENDER, false);
- setFlag(FLAG_RENDERING, true);
+
+ if (setRenderingFlag)
+ {
+ setFlag(FLAG_RENDERING, true);
+ }
}
/**
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java?rev=673363&r1=673362&r2=673363&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupContainer.java
Wed Jul 2 04:33:18 2008
@@ -1641,14 +1641,14 @@
* @see org.apache.wicket.Component#internalMarkRendering()
*/
@Override
- void internalMarkRendering()
+ void internalMarkRendering(boolean setRenderingFlag)
{
- super.internalMarkRendering();
+ super.internalMarkRendering(setRenderingFlag);
final int size = children_size();
for (int i = 0; i < size; i++)
{
final Component child = children_get(i);
- child.internalMarkRendering();
+ child.internalMarkRendering(setRenderingFlag);
}
}
Modified:
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=673363&r1=673362&r2=673363&view=diff
==============================================================================
---
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
(original)
+++
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
Wed Jul 2 04:33:18 2008
@@ -76,8 +76,8 @@
PageParameters pageParameters, Component component,
RequestListenerInterface listenerInterface)
{
- this(pageMapName, pageClass, pageParameters,
component.getPath(), listenerInterface
- .getName(),
component.getPage().getCurrentVersionNumber());
+ this(pageMapName, pageClass, pageParameters,
component.getPath(),
+ listenerInterface.getName(),
component.getPage().getCurrentVersionNumber());
int version = component.getPage().getCurrentVersionNumber();
setPage(component.getPage());
@@ -110,6 +110,7 @@
pageParameters.put(WebRequestCodingStrategy.INTERFACE_PARAMETER_NAME,
param.toString());
}
+ @Override
public void processEvents(RequestCycle requestCycle)
{
Page page = getPage();
@@ -134,7 +135,7 @@
// this is quite a hack to get components in repeater
work.
// But it still can fail if the repeater is a paging
one or on every render
// it will generate new index for the items...
- page.beforeRender();
+ page.prepareForRender(false);
component = page.get(pageRelativeComponentPath);
if (component == null)
{
@@ -146,8 +147,7 @@
" it could be that the
component is inside a repeater make your component return false in
getStatelessHint()");
}
}
- RequestListenerInterface listenerInterface =
RequestListenerInterface
- .forName(interfaceName);
+ RequestListenerInterface listenerInterface =
RequestListenerInterface.forName(interfaceName);
if (listenerInterface == null)
{
throw new WicketRuntimeException("unable to find
listener interface " + interfaceName);
@@ -155,6 +155,7 @@
listenerInterface.invoke(page, component);
}
+ @Override
public void respond(RequestCycle requestCycle)
{
Page page = getPage(requestCycle);