You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@shale.apache.org by Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de> on 2007/05/01 05:36:37 UTC

Re: Submitted values lost - view is "refilled" everytime with model values

Clay Trunk build on 20.4.07.
Myfaces 1.1.5

Torsten

Am Montag, den 30.04.2007, 15:07 +0000 schrieb Gary VanMatre:
>  
> >Now it gets interesting.
> >I tried to get it working, using scxml dialogs instead of SWF.
> >
> >The same problem.
> >
> >Lets take shale dialogs - i guess thats your scope, so you may have
> >better insights for me when using the dialogs, whats going wrong.
> >
>  
> What version of Clay are you using?  What version of Myfaces are you
> using?
>  
> It might be related to this issue:
> https://issues.apache.org/struts/browse/SHALE-418
>  
> 
> >Torsten
>  
> Gary
> 
> E-Mail-Nachricht-Anlage
> > -------- Weitergeleitete Nachricht --------
> > Von: Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de>
> > An: user@shale.apache.org
> > Betreff: Re: Submitted values lost - view is "refilled" everytime
> > with model values
> > Datum: Sun, 29 Apr 2007 10:38:41 +0000
> > 
> > Now it gets interesting.
> > I tried to get it working, using scxml dialogs instead of SWF.
> > 
> > The same problem.
> > 
> > Lets take shale dialogs - i guess thats your scope, so you may have
> > better insights for me when using the dialogs, whats going wrong.
> > 
> > Torsten
> > 
> > 
> > Am Freitag, den 27.04.2007, 14:41 +0000 schrieb Gary VanMatre:
> > > >From: Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de> 
> > > >Hm did many Debug Points.
> > > >
> > > >My RequestParameterMap got the entered values.
> > > >They are applied to my components in Phase 2 - setLocalValueSet is
> > > >called with set = true.
> > > >
> > > >Now Phase 3 fails and Lifecycle goes to Phase 6.
> > > >Now a fresh tree is rendered , because my components does not got a
> > > >local value set - although the RestoreViewExecutor:
> > > >
> > > >
> > > >Application application = facesContext.getApplication();
> > > >ViewHandler viewHandler = application.getViewHandler();
> > > >
> > > >// boolean viewCreated = false;
> > > >UIViewRoot viewRoot = viewHandler.restoreView(facesContext, 
> > > >viewId);
> > > >if (viewRoot == null) {
> > > >viewRoot = viewHandler.createView(facesContext, viewId);
> > > >viewRoot.setViewId(viewId);
> > > >facesContext.renderResponse();
> > > >// viewCreated = true;
> > > > }
> > > >
> > > >does call the restoreView and the viewRoot is not null.
> > > >If the view gets restored, why are t he components "empty"?
> > > >
> > >  
> > > I was speculating that the spring dialog flow was loosing track
> > > of the current dialog.  The values in the flowScope were lost
> > > because the dialog flow was somehow disconnected.  
> > >  
> > > That's why I suggested that you debug the spring FlowPhaseListener.
> > > This guy adds a component to the view root.  At first, I thought that 
> > > a Clay full view might be removing the FlowExecutionKeyStateHolder
> > > component since there was not any Clay config on that component but
> > > after further review, I don't think that's the issue.  Clay should
> > > only remove
> > > components from the tree in the render phase if they are nested under
> > > a 
> > > Clay component (AssignChildrenCommand).  
> > >  
> > > This FlowExecutionKeyStateHolder component is added as a child to 
> > > the view root by the FlowPhaseListener.  It's not added as a child 
> > > under a composing Clay component so I don't think that's the problem.
> > >  
> > > However, stepping through the FlowPhaseListener should point to the
> > > problem.
> > >  
> > > 
> > > >I am a little bit confused now, i've missed something, but dont know
> > > >where to look now.
> > > >
> > > >The PhaseListener is doing the flow story and seems to work correct -
> > > i
> > > >hope i did not missunderstand things.
> > > >
> > > >Any hints?
> > > >
> > >  
> > > I'm not familiar with the spring web flow.  I'm only making guesses
> > > based
> > > on a quick look through the javadoc.  If you create an example,
> > > and attach it to a JIRA ticket, I'll try to make time to take a look.
> > >  
> > >  
> > >  
> > > 
> > > Torsten
> > > 
> > > 
> > > E-Mail-Nachricht-Anlage
> > > > -------- Weitergeleitete Nachricht --------
> > > > Von: Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de>
> > > > An: user@shale.apache.org
> > > > Betreff: Re: Submitted values lost - view is "refilled" everytime
> > > > with model values
> > > > Datum: Thu, 26 Apr 2007 17:38:42 +0000
> > > > 
> > > > Hm did many Debug Points.
> > > > 
> > > > My RequestParameterMap got the entered values.
> > > > They are applied to my components in Phase 2 - setLocalValueSet is
> > > > called with set = true.
> > > > 
> > > > Now Phase 3 fails and Lifecycle goes to Phase 6.
> > > > Now a fresh tree is rendered , because my components does not got a
> > > > local value set - although the RestoreViewExecutor:
> > > > 
> > > > 
> > > > 		Application application = facesContext.getApplication();
> > > > 		ViewHandler viewHandler = application.getViewHandler();
> > > > 
> > > > 		// boolean viewCreated = false;
> > > > 		UIViewRoot viewRoot = viewHandler.restoreView(facesContext, viewId);
> > > > 		if (viewRoot == null) {
> > > > 			viewRoot = viewHandler.createView(facesContext, viewId);
> > > > 			viewRoot.setViewId(viewId);
> > > > 			facesContext.renderResponse();
> > > > 			// viewCreated = true;
> > > > 		}
> > > > 
> > > > does call the restoreView and the viewRoot is not null.
> > > > If the view gets restored, why are the components "empty"?
> > > > 
> > > > I am a little bit confused now, i've missed something, but dont know
> > > > where to look now.
> > > > 
> > > > The PhaseListener is doing the flow story and seems to work correct - i
> > > > hope i did not missunderstand things.
> > > > 
> > > > Any hints?
> > > > 
> > > > Torsten
> > > > 
> > > > 
> > > > Am Donnerstag, den 26.04.2007, 15:51 +0000 schrieb Gary VanMatre:
> > > > > >Got a problem with clay and flowScoped Spring beans.
> > > > > >
> > > > > >My view is everytime filled with the model values. The submitted values
> > > > > >are lost.
> > > > > >
> > > > > >I can enter some data in my input fields and submit the form - if i left
> > > > > >some required input fields empty, a message appears that something is
> > > > > >missing, so far so good.
> > > > > >However, the same field which i left empty - and all others i may have
> > > > > >changed - are now populated again with values from my bean.
> > > > > >
> > > > > >What might cause this? I thought the component should remember this
> > > > > >value and display this instead of the beans model value. Lifecycle
> > > > > >stopped processing at Validation phase, so the components should not be
> > > > > >cleared, any idea or tipps to debug this?
> > > > > >
> > > > > I took a look at the webflow javadoc [1].  It looks like they are using a couple tricks for saving the FlowExecution.  The FlowPhase listener [2] adds a non-visual component to the view root to keep state.  It also adds the flow execution key to the view root.It looks like the flow key is used to restore the FlowExecution.  I suspect the problem you are seeing has to do with the state not being resorted for the current flow on the postback.  I would try setting some break points in the FlowPhaseListener.         
> > > > > [1] http://static.springframework.org/spring-webflow/docs/current/api/overview-summary.html
> > > > > [2] http://opensource.atlassian.com/projects/spring/secure/attachment/12520/FlowExecutionKeyStateHolder.patch
> > > > > 
> > > > > >Torsten
> > > > > 
> > > > > 
> > > > > Gary

Re: Submitted values lost - view is "refilled" everytime with model values

Posted by Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de>.
Can anyone confirm or deny this?
I'll tried to make this happen in the clay usecase app, but i can't
reproduce it there.
Using my own example - i get this bug everytime.

Torsten

Am Dienstag, den 01.05.2007, 17:08 +0200 schrieb Torsten Krah:
> Got it - maybe.
> 
> This works:
> 
> <!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:f="http://java.sun.com/jsf/core"
> 	xmlns:h="http://java.sun.com/jsf/html"
> 	xmlns:clay="http://shale.apache.org/clay"
> 	xmlns:s="http://shale.apache.org/core"
> 	xmlns:t="http://myfaces.apache.org/tomahawk">
> <head>
> <title><span jsfid="h:outputText" value="@title"/></title>
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> </head>
> <body>
> <div id="content">
> 	 <span jsfid="clay" clayjsfid="@content"
> allowbody="false">Content</span>
> </div>
> </body>
> </html>
> 
> This works not:
> 
> <!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:f="http://java.sun.com/jsf/core"
> 	xmlns:h="http://java.sun.com/jsf/html"
> 	xmlns:clay="http://shale.apache.org/clay"
> 	xmlns:s="http://shale.apache.org/core"
> 	xmlns:t="http://myfaces.apache.org/tomahawk">
> <span id="view" jsfid="f:view" locale="en" />
> <head>
> <title><span jsfid="h:outputText" value="@title"/></title>
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
> </head>
> <body>
> <div id="content">
> 	 <span jsfid="clay" clayjsfid="@content"
> allowbody="false">Content</span>
> </div>
> </body>
> </html>
> 
> 
> Removing the span for the "f:view" which assigns my locale (tested, i
> can use a static value or a EL expression, both works assigning the
> locale), but both breaks the formular.
> 
> Removing the span - magic my formular work, no values are lost.
> Taking it back it breaks again.
> 
> Can anyone confirm this? If yes, i am going to open a jira issue.
> 
> Torsten

Re: Submitted values lost - view is "refilled" everytime with model values

Posted by Torsten Krah <tk...@fachschaft.imn.htwk-leipzig.de>.
Got it - maybe.

This works:

<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:clay="http://shale.apache.org/clay"
	xmlns:s="http://shale.apache.org/core"
	xmlns:t="http://myfaces.apache.org/tomahawk">
<head>
<title><span jsfid="h:outputText" value="@title"/></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="content">
	 <span jsfid="clay" clayjsfid="@content"
allowbody="false">Content</span>
</div>
</body>
</html>

This works not:

<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:clay="http://shale.apache.org/clay"
	xmlns:s="http://shale.apache.org/core"
	xmlns:t="http://myfaces.apache.org/tomahawk">
<span id="view" jsfid="f:view" locale="en" />
<head>
<title><span jsfid="h:outputText" value="@title"/></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div id="content">
	 <span jsfid="clay" clayjsfid="@content"
allowbody="false">Content</span>
</div>
</body>
</html>


Removing the span for the "f:view" which assigns my locale (tested, i
can use a static value or a EL expression, both works assigning the
locale), but both breaks the formular.

Removing the span - magic my formular work, no values are lost.
Taking it back it breaks again.

Can anyone confirm this? If yes, i am going to open a jira issue.

Torsten