myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matthias Wessendorf <mat...@apache.org>
Subject Re: svn commit: r813481 - in /myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html: HtmlLinkRendererBase.java HtmlOutcomeTargetButtonRendererBase.java HtmlRendererUtils.java
Date Wed, 30 Dec 2009 17:30:03 GMT
On Wed, Dec 30, 2009 at 6:26 PM, Matthias Wessendorf <matzew@apache.org> wrote:
> Hi Leo,
>
>> ==============================================================================
>> --- myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
(original)
>> +++ myfaces/shared/trunk_4.0.x/core/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java
Thu Sep 10 15:51:44 2009
>> @@ -30,6 +30,10 @@
>>  import org.apache.myfaces.shared.renderkit.html.util.JavascriptUtils;
>>
>>  import javax.faces.FacesException;
>> +import javax.faces.application.ConfigurableNavigationHandler;
>> +import javax.faces.application.NavigationCase;
>> +import javax.faces.application.NavigationHandler;
>> +import javax.faces.application.ViewHandler;
>>  import javax.faces.component.*;
>>  import javax.faces.component.behavior.ClientBehavior;
>>  import javax.faces.component.behavior.ClientBehaviorHolder;
>> @@ -1693,7 +1697,75 @@
>>         return formInfo.getFormName() + NamingContainer.SEPARATOR_CHAR
>>             + HIDDEN_COMMANDLINK_FIELD_NAME_MYFACES_OLD;
>>     }
>> +
>> +    public static String getOutcomeTargetLinkHref (
>> +            FacesContext facesContext, UIOutcomeTarget component) throws IOException
>> +    {
>> +        String fragment = (String) component.getAttributes().get ("fragment");
>> +        String href = component.getOutcome();
>> +        ViewHandler viewHandler = facesContext.getApplication().getViewHandler();
>> +
>> +        // The href for an HtmlOutcomeTargetLink is outcome#fragment.
>> +
>> +        href = ((href == null) ? "" : href.trim());
>> +
>> +        // Get the correct URL for the outcome.
>> +
>> +        NavigationHandler nh = facesContext.getApplication().getNavigationHandler();
>> +        if (!(nh instanceof ConfigurableNavigationHandler))
>> +        {
>> +            throw new FacesException("navigation handler must be instance
of ConfigurabeNavigationHandler for use h:link or h:button");
>> +        }
>> +        ConfigurableNavigationHandler navigationHandler = (ConfigurableNavigationHandler)
nh;
>> +
>> +        //fromAction is null because there
>> +        NavigationCase navigationCase = navigationHandler.getNavigationCase(facesContext,
null, href);
>> +
>> +        href = navigationCase.getToViewId(facesContext);
>
> are you sure that "navigationCase" is never null here, in this case ?

I have an <h:link outcome="foo"> where there is not foo.xhtml;

-Matthias

>
> -Matthias
>
>
>
>> +
>> +        if (fragment != null)
>> +        {
>> +            fragment = fragment.trim();
>> +
>> +            if (fragment.length() > 0)
>> +            {
>> +                href += "#" + fragment;
>> +            }
>> +        }
>> +
>> +        Map<String, List<String>> parameters = null;
>> +
>> +        for (Iterator it = component.getChildren().iterator(); it.hasNext();
)
>> +        {
>> +            UIComponent child = (UIComponent)it.next();
>> +            if (child instanceof UIParameter)
>> +            {
>> +                String name = ((UIParameter)child).getName();
>> +                Object value = ((UIParameter)child).getValue();
>> +                if (parameters == null)
>> +                {
>> +                    parameters = new HashMap<String,List<String>>();
>> +                }
>> +                if (parameters.containsKey(name))
>> +                {
>> +                    parameters.get(name).add(value.toString());
>> +                }
>> +                else
>> +                {
>> +                    ArrayList<String> list = new ArrayList<String>(1);
>> +                    list.add(value.toString());
>> +                    parameters.put(name, list);
>> +                }
>> +            }
>> +        }
>>
>> +        // In theory the precedence order to deal with params is this:
>> +        // component parameters, navigation-case parameters, view parameters
>> +        // getBookmarkableURL deal with this details.
>> +        href = viewHandler.getBookmarkableURL(facesContext, href, parameters,
component.isIncludeViewParams());
>> +
>> +        return href;
>> +    }
>>
>>     private static String HTML_CONTENT_TYPE = "text/html";
>>     private static String TEXT_ANY_CONTENT_TYPE = "text/*";
>>
>>
>>
>
>
>
> --
> Matthias Wessendorf
>
> blog: http://matthiaswessendorf.wordpress.com/
> sessions: http://www.slideshare.net/mwessendorf
> twitter: http://twitter.com/mwessendorf
>



-- 
Matthias Wessendorf

blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf

Mime
View raw message