[jira] Resolved: (WICKET-1698) IE7 memory leak when components are updated via AJAX
[ https://issues.apache.org/jira/browse/WICKET-1698?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matej Knopp resolved WICKET-1698. - Resolution: Invalid IE7 memory leak when components are updated via AJAX Key: WICKET-1698 URL: https://issues.apache.org/jira/browse/WICKET-1698 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.3.3, 1.4-M2 Environment: WinXP SP3, IE7 Reporter: Niels Boeger Assignee: Matej Knopp I noticed a large increase in IE7s memory consumption when a wicket component is updated via AJAX. In my case, I used wicket to update the markup of a html table. The table acts as datasource for a yui datatable. The markup update is triggered by a wicketAjaxGet request on the client, and Wicket updates the markup of the table. Drip (http://www.outofhanwell.com/ieleak/) shows that old markup is not garbage collected by IE7. YUI does not seem to be the culprit, the problem occured even when I removed all YUI code. Using Drip on the AutoComplete example (http://www.wicketstuff.org/wicket13/ajax/autocomplete) shows the same behavior. I tested this in my application with both Wicket 1.3.3 and Wicket 1.4-M2. FF2 (Mac OS X WinXP), FF3RC2 (WinXP) and Safari 3.1 (Mac OS X) run fine. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
svn commit: r673363 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket: Component.java MarkupContainer.java request/target/component/BookmarkableListenerInterfaceRequestTarget.java
Author: knopp Date: Wed Jul 2 04:33:18 2008 New Revision: 673363 URL: http://svn.apache.org/viewvc?rev=673363view=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=673363r1=673362r2=673363view=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 IConverterObject converter = (IConverterObject) getConverter(objectClass); + final IConverterObject converter = (IConverterObject)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(); ListComponent 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 IModelObject model = (IModelObject) getDefaultModel(); + final IModelObject model = (IModelObject)getDefaultModel(); // Check whether anything can be set at all if (model == null) @@ -4103,10 +4129,14 @@ /** * */ - void internalMarkRendering() + void
[jira] Created: (WICKET-1726) utility class: RedirectException
utility class: RedirectException Key: WICKET-1726 URL: https://issues.apache.org/jira/browse/WICKET-1726 Project: Wicket Issue Type: Improvement Components: wicket Reporter: Peter Ertl I think it's quite common for wicket applications to redirect to other pages or external urls. So I think many people would like RedirectException (and get rid of some boilerplate code). if(some_condition) { getRequestCycle().setRedirect(true); throw new RestartResponseException(OtherPage.class); } could be simplified to if(some_condition) throw new RedirectException(OtherPage.class); The patch also includes: RestartResponseException(Class? extends Page pageClass, PageParameters params); RestartResponseException(Page page); RestartResponseException(String url); Also I think this makes redirecting not only more compact but also easier to understand for newbies. They usually don't know about request cycles and stuff when they start playing with wicket. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (WICKET-1726) utility class: RedirectException
[ https://issues.apache.org/jira/browse/WICKET-1726?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Peter Ertl updated WICKET-1726: --- Attachment: WICKET-1726-1.4.x.patch WICKET-1726-1.3.x.patch utility class: RedirectException Key: WICKET-1726 URL: https://issues.apache.org/jira/browse/WICKET-1726 Project: Wicket Issue Type: Improvement Components: wicket Reporter: Peter Ertl Attachments: WICKET-1726-1.3.x.patch, WICKET-1726-1.4.x.patch I think it's quite common for wicket applications to redirect to other pages or external urls. So I think many people would like RedirectException (and get rid of some boilerplate code). if(some_condition) { getRequestCycle().setRedirect(true); throw new RestartResponseException(OtherPage.class); } could be simplified to if(some_condition) throw new RedirectException(OtherPage.class); The patch also includes: RestartResponseException(Class? extends Page pageClass, PageParameters params); RestartResponseException(Page page); RestartResponseException(String url); Also I think this makes redirecting not only more compact but also easier to understand for newbies. They usually don't know about request cycles and stuff when they start playing with wicket. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Closed: (WICKET-1725) BookmarkableListenerInterfaceRequestTarget should call component.prepareForRender instead of beforeRender
[ https://issues.apache.org/jira/browse/WICKET-1725?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matej Knopp closed WICKET-1725. --- BookmarkableListenerInterfaceRequestTarget should call component.prepareForRender instead of beforeRender - Key: WICKET-1725 URL: https://issues.apache.org/jira/browse/WICKET-1725 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.4-M2 Reporter: Matej Knopp Assignee: Matej Knopp just calling beforeRender doesn't cleanup the PREPARED_FOR_RENDER flag -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
svn commit: r673447 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
Author: knopp Date: Wed Jul 2 10:31:21 2008 New Revision: 673447 URL: http://svn.apache.org/viewvc?rev=673447view=rev Log: WICKET-1724 Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java 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=673447r1=673446r2=673447view=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 10:31:21 2008 @@ -23,6 +23,7 @@ import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.Session; import org.apache.wicket.WicketRuntimeException; +import org.apache.wicket.protocol.http.PageExpiredException; import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; import org.apache.wicket.util.string.AppendingStringBuffer; import org.apache.wicket.util.string.Strings; @@ -127,6 +128,12 @@ } } + if (page == null) + { + throw new PageExpiredException( + Request cannot be processed. The target page does not exist anymore.); + } + final String pageRelativeComponentPath = Strings.afterFirstPathComponent(componentPath, Component.PATH_SEPARATOR); Component component = page.get(pageRelativeComponentPath);
[jira] Assigned: (WICKET-1724) Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in Book
[ https://issues.apache.org/jira/browse/WICKET-1724?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matej Knopp reassigned WICKET-1724: --- Assignee: Matej Knopp Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in BookmarkableListenerInterfaceRequestTarget.processEvents) -- Key: WICKET-1724 URL: https://issues.apache.org/jira/browse/WICKET-1724 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.3.3, 1.4-M2 Environment: JDK 5.0, RHEL 4 Reporter: Farhan Assignee: Matej Knopp Attachments: myproject.zip Clicking an AjaxLink (after session-expiry period) on a page mounted through QueryStringUrlCodingStrategy results in a NullPointerException in Root cause:java.lang.NullPointerException at org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget.processEvents(BookmarkableListenerInterfaceRequestTarget.java:131) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1171) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1248) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1349) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:199) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
svn commit: r673448 - /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java
Author: knopp Date: Wed Jul 2 10:32:29 2008 New Revision: 673448 URL: http://svn.apache.org/viewvc?rev=673448view=rev Log: WICKET-1724 Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java?rev=673448r1=673447r2=673448view=diff == --- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java (original) +++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/component/BookmarkableListenerInterfaceRequestTarget.java Wed Jul 2 10:32:29 2008 @@ -23,6 +23,7 @@ import org.apache.wicket.RequestListenerInterface; import org.apache.wicket.Session; import org.apache.wicket.WicketRuntimeException; +import org.apache.wicket.protocol.http.PageExpiredException; import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy; import org.apache.wicket.util.string.AppendingStringBuffer; import org.apache.wicket.util.string.Strings; @@ -126,6 +127,12 @@ } } + if (page == null) + { + throw new PageExpiredException( + Request cannot be processed. The target page does not exist anymore.); + } + final String pageRelativeComponentPath = Strings.afterFirstPathComponent(componentPath, Component.PATH_SEPARATOR); Component component = page.get(pageRelativeComponentPath);
svn commit: r673531 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java
Author: knopp Date: Wed Jul 2 15:28:35 2008 New Revision: 673531 URL: http://svn.apache.org/viewvc?rev=673531view=rev Log: WICKET-1560 Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java?rev=673531r1=673530r2=673531view=diff == --- wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/MarkupFragmentFinder.java Wed Jul 2 15:28:35 2008 @@ -21,7 +21,6 @@ import org.apache.wicket.markup.MarkupStream; import org.apache.wicket.markup.html.border.Border; import org.apache.wicket.markup.html.panel.Fragment; -import org.apache.wicket.markup.repeater.AbstractRepeater; /** * Responding to an AJAX request requires that we position the markup stream at the component @@ -83,8 +82,7 @@ { // WICKET-1560 Component parent = component.getParent(); - if (parent instanceof AbstractRepeater id != null - id.equals(parent.getId())) + if (id != null id.equals(parent.getId())) { return markupStream; }
svn commit: r673542 - in /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree: AbstractTree.java res/tree.js
Author: knopp Date: Wed Jul 2 16:22:06 2008 New Revision: 673542 URL: http://svn.apache.org/viewvc?rev=673542view=rev Log: tree fixes Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673542r1=673541r2=673542view=diff == --- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original) +++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed Jul 2 16:22:06 2008 @@ -35,6 +35,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.HeaderContributor; import org.apache.wicket.behavior.IBehavior; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.MarkupStream; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.internal.HtmlHeaderContainer; @@ -190,8 +191,10 @@ { // yes, write empty div with id // this is necessary for createElement js to work correctly + String tagName = ((ComponentTag)markupStream.get()).getName(); getResponse().write( - div style=\display:none\ id=\ + getMarkupId() + \/div); ++ tagName + style=\display:none\ id=\ + getMarkupId() + \/ + + tagName + ); markupStream.skipComponent(); } else @@ -1229,6 +1232,26 @@ { invalidateNode(node, false); } + + /** +* INTERNAL +* +* @param node +*/ + public final void markNodeChildrenDirty(TreeNode node) + { + TreeItem item = (TreeItem)nodeToItemMap.get(node); + if (item != null) + { + visitItemChildren(item, new IItemCallback() + { + public void visitItem(TreeItem item) + { + invalidateNode((TreeNode)item.getModelObject(), false); + } + }); + } + } /** * Invalidates single node (without children). On the next render, this node will be updated. Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js?rev=673542r1=673541r2=673542view=diff == --- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js (original) +++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js Wed Jul 2 16:22:06 2008 @@ -51,7 +51,7 @@ } var after = document.getElementById(afterId); - var newNode = document.createElement(script); + var newNode = document.createElement(after.tagName); newNode.setAttribute(id, elementId); var p = after.parentNode;
svn commit: r673543 - in /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree: AbstractTree.java res/tree.js
Author: knopp Date: Wed Jul 2 16:23:25 2008 New Revision: 673543 URL: http://svn.apache.org/viewvc?rev=673543view=rev Log: tree fixes Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673543r1=673542r2=673543view=diff == --- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed Jul 2 16:23:25 2008 @@ -33,6 +33,7 @@ import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.behavior.HeaderContributor; import org.apache.wicket.behavior.IBehavior; +import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.MarkupStream; import org.apache.wicket.markup.html.WebMarkupContainer; import org.apache.wicket.markup.html.internal.HtmlHeaderContainer; @@ -196,8 +197,10 @@ { // yes, write empty div with id // this is necessary for createElement js to work correctly + String tagName = ((ComponentTag)markupStream.get()).getName(); getResponse().write( - div style=\display:none\ id=\ + getMarkupId() + \/div); ++ tagName + style=\display:none\ id=\ + getMarkupId() + \/ + + tagName + ); markupStream.skipComponent(); } else @@ -631,8 +634,7 @@ } /** -* @see org.apache.wicket.markup.html.tree.ITreeStateListener#nodeExpanded(javax.swing.tree.TreeNode -* ) +* @see org.apache.wicket.markup.html.tree.ITreeStateListener#nodeExpanded(javax.swing.tree.TreeNode ) */ public final void nodeExpanded(Object node) { @@ -643,8 +645,7 @@ } /** -* @see org.apache.wicket.markup.html.tree.ITreeStateListener#nodeSelected(javax.swing.tree.TreeNode -* ) +* @see org.apache.wicket.markup.html.tree.ITreeStateListener#nodeSelected(javax.swing.tree.TreeNode ) */ public final void nodeSelected(Object node) { Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js?rev=673543r1=673542r2=673543view=diff == --- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/res/tree.js Wed Jul 2 16:23:25 2008 @@ -51,7 +51,7 @@ } var after = document.getElementById(afterId); - var newNode = document.createElement(div); + var newNode = document.createElement(after.tagName); newNode.setAttribute(id, elementId); var p = after.parentNode;
[jira] Commented: (WICKET-1724) Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in Boo
[ https://issues.apache.org/jira/browse/WICKET-1724?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610096#action_12610096 ] Farhan commented on WICKET-1724: Thanks for the quick fix, Matej. Verified on 1.3 branch and it looks good, both in Safari and IE. Clicking on AjaxLink (when used on a page mounted through QueryStringUrlCodingStrategy) after session-expiry throws a NullPointerException in IE and Safari (i.e. in BookmarkableListenerInterfaceRequestTarget.processEvents) -- Key: WICKET-1724 URL: https://issues.apache.org/jira/browse/WICKET-1724 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.3.3, 1.4-M2 Environment: JDK 5.0, RHEL 4 Reporter: Farhan Assignee: Matej Knopp Fix For: 1.3.5, 1.4-M3 Attachments: myproject.zip Clicking an AjaxLink (after session-expiry period) on a page mounted through QueryStringUrlCodingStrategy results in a NullPointerException in Root cause:java.lang.NullPointerException at org.apache.wicket.request.target.component.BookmarkableListenerInterfaceRequestTarget.processEvents(BookmarkableListenerInterfaceRequestTarget.java:131) at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91) at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1171) at org.apache.wicket.RequestCycle.step(RequestCycle.java:1248) at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1349) at org.apache.wicket.RequestCycle.request(RequestCycle.java:493) at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:387) at org.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:199) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1088) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
svn commit: r673554 - /wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Author: knopp Date: Wed Jul 2 17:52:57 2008 New Revision: 673554 URL: http://svn.apache.org/viewvc?rev=673554view=rev Log: unselect deleted item Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Modified: wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java URL: http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673554r1=673553r2=673554view=diff == --- wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original) +++ wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed Jul 2 17:52:57 2008 @@ -830,6 +830,8 @@ } }); + getTreeState().selectNode(item.getDefaultModelObject(), false); + removeItem(item); } }
svn commit: r673555 - /wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java
Author: knopp Date: Wed Jul 2 17:53:47 2008 New Revision: 673555 URL: http://svn.apache.org/viewvc?rev=673555view=rev Log: unselect deleted item Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Modified: wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java URL: http://svn.apache.org/viewvc/wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java?rev=673555r1=673554r2=673555view=diff == --- wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java (original) +++ wicket/branches/wicket-1.3.x/jdk-1.4/wicket/src/main/java/org/apache/wicket/markup/html/tree/AbstractTree.java Wed Jul 2 17:53:47 2008 @@ -831,6 +831,8 @@ getTreeState().selectNode((TreeNode)item.getModelObject(), false); } }); + + getTreeState().selectNode((TreeNode)item.getModelObject(), false); removeItem(item); }
[jira] Commented: (WICKET-1310) StringValidator.maximumLength should automatically add maxlength html attribute
[ https://issues.apache.org/jira/browse/WICKET-1310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610117#action_12610117 ] Timo Rantalaiho commented on WICKET-1310: - Likewise, sometimes even for TextField you want to allow the user to enter the whole input but show that she must shorten it. Take for example a case where the user pastes a long message from somewhere to a field that is used to enter text of an SMS message, max 160 characters. Then it's a lot better to show the whole input and an (Ajax / Javascript) error message right away to let the user shorten the message, instead of just cutting it at 160 characters. So if something like this is done, it should be optional. StringValidator.maximumLength should automatically add maxlength html attribute --- Key: WICKET-1310 URL: https://issues.apache.org/jira/browse/WICKET-1310 Project: Wicket Issue Type: Improvement Affects Versions: 1.3.1 Reporter: Ryan Sonnek Assignee: Johan Compagner Priority: Minor Fix For: 1.5-M1 Attachments: patch.txt Validating max length of strings should not require a round trip to the server. adding the html attribute to forms will prevent data entry on the client side. I'm manually doing this as part of the wicketstuff-hibernate project, but it would be great to just have this built into wicket. http://wicket-stuff.svn.sourceforge.net/viewvc/wicket-stuff/trunk/wicketstuff-hibernate-behavior/src/main/java/org/wicketstuff/hibernate/annotation/HibernateAnnotationComponentConfigurator.java?view=markup I understand that currently validators can be used independently of Wicket and don't know about components or behaviors, but i'm recommending this be changed. Wicket is a *web framework*, not a *validation library*. If i want a portable validation library, I'll use commons-validation, not wicket. So, the validators should be *web validators* and be able to modify components or render custom javascript to help with web validation. FYI: tapestry does it! =) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (WICKET-1560) MarkupFragmentFinder fails on transparent resolvers within Repeaters
[ https://issues.apache.org/jira/browse/WICKET-1560?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12610121#action_12610121 ] Jan Kriesten commented on WICKET-1560: -- If you don't extend AbstractRepeater, in which way does this affect you at all? MarkupFragmentFinder fails on transparent resolvers within Repeaters Key: WICKET-1560 URL: https://issues.apache.org/jira/browse/WICKET-1560 Project: Wicket Issue Type: Bug Components: wicket Affects Versions: 1.3.3, 1.4-M1 Environment: Any Reporter: Jan Kriesten Assignee: Gerolf Seitz Priority: Critical Fix For: 1.3.4, 1.4-M2 I extended the AjaxDataTable to be able to add Rows to certain states of the rows. However, MarkupFragmentFinder fails to resolve the code under this condition since it compares with the wrong components in this case: Markup: wicket:container wicket:id=rows tr wicket:id=rowtd wicket:id=cellsspan wicket:id=cell[cell]/span/td/tr tr wicket:id=action-row class=actionRow/tr /wicket:container 'row' is the transparent resolver in this case to maintain the hierarchy needed by the DataTable. MarkupFragmentFinder fails in the case of adding a cell to an AjaxRequestTarget. Fix: Everything works as expected, when MarkupFragmentFinder checks for the parent being an AbstractRepeater and in the case compares the parent.id with the supplied id (code provided by Gerolf): if (elem instanceof ComponentTag) { ComponentTag tag = (ComponentTag)elem; String id = tag.getId(); if ((id != null) id.equals(component.getId())) { // Ok, found it return markupStream; } else { Component parent = component.getParent(); if (parent instanceof AbstractRepeater id != null id.equals(parent.getId())) { return markupStream; } } } -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.