[weld-issues] [JBoss JIRA] Commented: (WELD-448) invoking sendRedirect() in a JSP causes WELD-001303

Pete Muir (JIRA) jira-events at lists.jboss.org
Sun Feb 21 07:11:10 EST 2010


    [ https://jira.jboss.org/jira/browse/WELD-448?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12515577#action_12515577 ] 

Pete Muir commented on WELD-448:
--------------------------------

The behavior of isTransient is correct to the spec. Suggest you direct comments on correctness of this to the EG.

Tested and fixed locally (BTW it is sane to check if the conversation is active before modifying the request URL IMO whatever).

> invoking sendRedirect() in a JSP causes WELD-001303
> ---------------------------------------------------
>
>                 Key: WELD-448
>                 URL: https://jira.jboss.org/jira/browse/WELD-448
>             Project: Weld
>          Issue Type: Bug
>          Components: Conversations
>    Affects Versions: 1.0.1.CR2
>            Reporter: Dan Allen
>             Fix For: 1.0.1.GA
>
>
> When sendRedirect() is used inside of a JSP page, it results in the exception WELD-001303: No active contexts for scope type @ConversationScoped
> A source of this error is a typical /index.jsp redirector page:
> <% response.sendRedirect("home.jsf"); %>
> The ConversationPropagationFilter is wrapping all requests (not just JSF requests). The conversation scope is only active during JSF requests. The problem comes when ConversationPropagationFilter traps calls to sendRedirect(). It first checks whether the conversation is transient. But this check mandates that the conversation scope be active.
> ConverationPropagationFilter.java:
> ...
> @Override
> public void sendRedirect(String path) throws IOException
> {
>    ConversationImpl conversation = conversation(ctx);
>    if (!conversation.isTransient())
>    {
>       ...
>    }
>    super.sendRedirect(path);
> }
> ...
> ConversationImpl.java
> ...
> public boolean isTransient()
> {
>    checkConversationActive();
>    return _transient;
> }
> ...
> I don't understand why isTransient() is enforcing that a conversation be active. If it's not active, then that should be considered transient (or there needs to be a portable way of checking if it's active.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        


More information about the weld-issues mailing list