[
https://issues.jboss.org/browse/WELD-909?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Marko Lukša updated WELD-909:
-----------------------------
Git Pull Request: https://github.com/weld/core/pull/183
Fixed.
The problem was in FacesUrlTransformer.toActionUrl(), where the original url
already contained the cid parameter. As a result, {{queryParameters}} also
contained the parameter. Furthermore, {{actionUrl}} (obtained by calling
{{getActionURL()}}) also contained the cid parameter. Since {{actionUrl}} and
{{queryParameters}} are simply concatenated, the resulting url will contain the
dual cid parameters.
I should probably have parsed both query strings and merged them
parameter-by-parameter, but this would be overkill and could have possibly
introduced new bugs (because of the parsing and then rebuilding the query
string). I opted for a simpler solution, since {{actionUrl}} will only contain
the cid parameter (and no other parameters) in all but the most exotic cases.
So if {{actionUrl}}'s query string is fully contained in {{queryParameters}}, I
simply ignore it and use {{queryParameters}} instead.
> Dual faces mapping and cid parameter for conversational redirect
> ----------------------------------------------------------------
>
> Key: WELD-909
> URL: https://issues.jboss.org/browse/WELD-909
> Project: Weld
> Issue Type: Bug
> Components: Conversations
> Affects Versions: 1.1.1.Final
> Reporter: Nicklas Karlsson
> Assignee: Marko Lukša
>
> Given a page like
> {code}
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:ui="http://java.sun.com/jsf/facelets"
> xmlns:h="http://java.sun.com/jsf/html"
> xmlns:f="http://java.sun.com/jsf/core">
> <h:head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"
> />
> <title>Concept</title>
> </h:head>
> <h:body>
> <f:view>
> <h:form>
> <h:commandButton value="redirect"
> action="page?faces-redirect=true"/>
> <h:commandButton value="non-transient"
> action="#{backingBean.nonTransient}"/>
> </h:form>
> </f:view>
> </h:body>
> </html>
> {code}
> and a backing bean like
> {code}
> package fi.nik.concept;
> import javax.enterprise.context.Conversation;
> import javax.inject.Inject;
> import javax.inject.Named;
> @Named
> public class BackingBean
> {
> @Inject
> private Conversation conversation;
> public String nonTransient()
> {
> conversation.begin();
> return "page?faces-redirect=true";
> }
> }
> {code}
> clicking "redirect" with non-transient conversations work fine but clicking
> "non-transient" duplicates the faces mappings and cid to something like
> http://localhost:8080/concept/faces/faces/page.xhtml?cid=1&cid=1 and clicking
> "redirect" after keeps the URL like that.
> It works normally after that (since the faces mapping is still hit and the
> cid is repeated with the same value) but it looks a bit odd.
> Would have written a test for it but git on Windows is... a bit nonlinear at
> times.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
weld-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/weld-issues