You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Igor Vaynberg (JIRA)" <ji...@apache.org> on 2009/02/01 01:09:59 UTC
[jira] Closed: (WICKET-1872) Url for behaviour and isTemporary flag
of behaviour.
[ https://issues.apache.org/jira/browse/WICKET-1872?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Igor Vaynberg closed WICKET-1872.
---------------------------------
Resolution: Duplicate
> Url for behaviour and isTemporary flag of behaviour.
> ----------------------------------------------------
>
> Key: WICKET-1872
> URL: https://issues.apache.org/jira/browse/WICKET-1872
> Project: Wicket
> Issue Type: Bug
> Components: wicket
> Affects Versions: 1.3.4
> Reporter: Stanislav Dvorscak
> Assignee: Igor Vaynberg
> Priority: Critical
>
> You add two behaviors to the Component. First behavior is temporary and the second is normal.
> Now the wicket creates the url by "urlFor(final Component component, final IBehavior behaviour, final RequestListenerInterface listener)" for second behavior with behaviourId=1. On the end of request the wicket removes the temporary behavior. Now the component contains only 1 but not 2 behaviors. And in the next request in method "public final void processEvents(final RequestCycle requestCycle)" the wicket tries to find the behavior by its id. But the problem is with if (component.getBehaviors().size() > idAsInt) condition, and with the fact that index of behavior is incorrect.
> The problematic classes with their methods:
> *org.apache.wicket.RequestCycle:*
> public final CharSequence urlFor(final Component component, final IBehavior behaviour,
> final RequestListenerInterface listener)
> {
> int index = component.getBehaviors().indexOf(behaviour);
> if (index == -1)
> {
> throw new IllegalArgumentException("Behavior " + this +
> " was not registered with this component: " + component.toString());
> }
> RequestParameters params = new RequestParameters();
> params.setBehaviorId(String.valueOf(index));
> ...
> ==============================================================================================
> *org.apache.wicket.request.target.component.listener.BehaviorRequestTarget*
> public final void processEvents(final RequestCycle requestCycle)
> {
> // Preprocess like standard component request. Do all the initialization
> // necessary
> onProcessEvents(requestCycle);
> // Get the IBehavior for the component based on the request parameters
> final Component component = getTarget();
> final String id = getRequestParameters().getBehaviorId();
> if (id == null)
> {
> throw new IllegalStateException(
> "Parameter behaviorId was not provided: unable to locate listener. Component: " +
> component.toString());
> }
> final int idAsInt = Integer.parseInt(id);
> IBehaviorListener behaviorListener = null;
> if (component.getBehaviors().size() > idAsInt)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.