You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Michael Heinen (JIRA)" <de...@myfaces.apache.org> on 2006/10/04 11:16:21 UTC

[jira] Created: (MYFACES-1430) selectOneMenu looses values after clicking immediate link (since 1.1.4)

selectOneMenu looses values after clicking immediate link (since 1.1.4)
-----------------------------------------------------------------------

                 Key: MYFACES-1430
                 URL: http://issues.apache.org/jira/browse/MYFACES-1430
             Project: MyFaces Core
          Issue Type: Bug
          Components: General
    Affects Versions: 1.1.4
         Environment: myFacesCore 1.1.4
tomahawk 1.1.3
Tomcat 5.5.17
jdk 1.5.0.7
            Reporter: Michael Heinen


After updating myFacesCore to 1.1.4 a selectOneMenu with a binding is not working anymore. 
The used version of tomahawk is 1.1.3.

The entries of the select one menu are cleared after clicking an immediate link.
The BackingBean BBController has session scope.
When I go back to myFacesCore 1.1.3 everything works fine!!!
I attached a small demo webApp that everybody can reconstruct this behaviour.
 
JSP snippet:
<f:view>
<h:form id="myform">
	<h:panelGroup>
		<h:outputText value="MyDropdown" style="padding-right:10px;"/>
		<h:selectOneMenu id="lastSearch" binding="#{BBController.savedSearchesMenu}"/>
	</h:panelGroup>

   <h:outputText value="<br/><br/>" escape="false"/>
   <h:commandLink actionListener="#{BBController.doImmediate}" value="doImmediate" immediate="true"></h:commandLink>
   <h:outputText value="<br/><br/>" escape="false"/>
   <h:commandLink actionListener="#{BBController.doNormal}" value="doNormal"></h:commandLink>
</h:form>
</f:view>

BBController snippet:
public class BackingBean implements Serializable {
	private static final long serialVersionUID = 1L;
	private transient UISelectOne savedSearchesMenu; 
	public BackingBean() {}
	
	public UISelectOne getSavedSearchesMenu() {
		System.out.println ("getSavedSearchesMenu called");
		if (this.savedSearchesMenu==null){
			this.populateSavedSearchesMenu();  
		}
		return this.savedSearchesMenu;
	}
	
	public void setSavedSearchesMenu(UISelectOne savedSearchesMenu) {
		System.out.println ("*** setSavedSearchesMenu called");
		this.savedSearchesMenu = savedSearchesMenu;
	}
	
	private SelectItem[] populateSavedSearchesMenu(){
        SelectItem[] selectItems = new SelectItem[5];
        for (int i=0; i<5; i++) {
        	selectItems[i] = new SelectItem(i+" testItem");
        }
        this.savedSearchesMenu = new HtmlSelectOneMenu();

        //add an emtpy Select Item
	  		UISelectItem uiItem = new UISelectItem();
        uiItem.setValue( new SelectItem(""));
        this.savedSearchesMenu.getChildren().add(0, uiItem);

        //add the saved searches
        UISelectItems uiItems = new UISelectItems();
        uiItems.setValue(selectItems);
        this.savedSearchesMenu.getChildren().add(uiItems);

        return selectItems;
	}
	
	/**
	 * Action Listener to show detailed document profile data.
	 * 
	 * @param ae The ActionEvent
	 */
	public void doImmediate(ActionEvent ea) {
		System.out.println ("doImmediate called");
		// This causes the current View tree to be discarded and a fresh one created.
		// The new components of course then have no submitted values, 
		// and so fetch their displayed values via their value-bindings.
		FacesContext context = FacesContext.getCurrentInstance();
	  ViewHandler viewHandler = context.getApplication().getViewHandler();
	  UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
	  context.setViewRoot(viewRoot);
	  context.renderResponse();
	}

	/**
	 * Action Listener to show detailed document profile data.
	 * 
	 * @param ae The ActionEvent
	 */
	public void doNormal(ActionEvent ea) {
		System.out.println ("do normal called");
	}
}


Output after clicking the immedaite link
with 1.1.3:
*** setSavedSearchesMenu called
doImmediate called
getSavedSearchesMenu called


with 1.1.4:
*** setSavedSearchesMenu called
doImmediate called
getSavedSearchesMenu called
*** setSavedSearchesMenu called


The obvious difference is the 2.nd call of the setter.
The parameter savedSearchesMenu (of type HtmlSelectOneMenu) is not initialized anymore.
All attributes are null or false except _valid which is true.

URL of the discussion:
http://marc.theaimsgroup.com/?l=myfaces-user&m=115953578324128&w=2


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

        

[jira] Commented: (MYFACES-1430) selectOneMenu looses values after clicking immediate link (since 1.1.4)

Posted by "Michael Heinen (JIRA)" <de...@myfaces.apache.org>.
    [ http://issues.apache.org/jira/browse/MYFACES-1430?page=comments#action_12439785 ] 
            
Michael Heinen commented on MYFACES-1430:
-----------------------------------------

I'd like to increase the priority.
The priority should be CRITICAL because I loose Data and can't use this version.



> selectOneMenu looses values after clicking immediate link (since 1.1.4)
> -----------------------------------------------------------------------
>
>                 Key: MYFACES-1430
>                 URL: http://issues.apache.org/jira/browse/MYFACES-1430
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 1.1.4
>         Environment: myFacesCore 1.1.4
> tomahawk 1.1.3
> Tomcat 5.5.17
> jdk 1.5.0.7
>            Reporter: Michael Heinen
>         Attachments: ddTest.war
>
>
> After updating myFacesCore to 1.1.4 a selectOneMenu with a binding is not working anymore. 
> The used version of tomahawk is 1.1.3.
> The entries of the select one menu are cleared after clicking an immediate link.
> The BackingBean BBController has session scope.
> When I go back to myFacesCore 1.1.3 everything works fine!!!
> I attached a small demo webApp that everybody can reconstruct this behaviour.
>  
> JSP snippet:
> <f:view>
> <h:form id="myform">
> 	<h:panelGroup>
> 		<h:outputText value="MyDropdown" style="padding-right:10px;"/>
> 		<h:selectOneMenu id="lastSearch" binding="#{BBController.savedSearchesMenu}"/>
> 	</h:panelGroup>
>    <h:outputText value="<br/><br/>" escape="false"/>
>    <h:commandLink actionListener="#{BBController.doImmediate}" value="doImmediate" immediate="true"></h:commandLink>
>    <h:outputText value="<br/><br/>" escape="false"/>
>    <h:commandLink actionListener="#{BBController.doNormal}" value="doNormal"></h:commandLink>
> </h:form>
> </f:view>
> BBController snippet:
> public class BackingBean implements Serializable {
> 	private static final long serialVersionUID = 1L;
> 	private transient UISelectOne savedSearchesMenu; 
> 	public BackingBean() {}
> 	
> 	public UISelectOne getSavedSearchesMenu() {
> 		System.out.println ("getSavedSearchesMenu called");
> 		if (this.savedSearchesMenu==null){
> 			this.populateSavedSearchesMenu();  
> 		}
> 		return this.savedSearchesMenu;
> 	}
> 	
> 	public void setSavedSearchesMenu(UISelectOne savedSearchesMenu) {
> 		System.out.println ("*** setSavedSearchesMenu called");
> 		this.savedSearchesMenu = savedSearchesMenu;
> 	}
> 	
> 	private SelectItem[] populateSavedSearchesMenu(){
>         SelectItem[] selectItems = new SelectItem[5];
>         for (int i=0; i<5; i++) {
>         	selectItems[i] = new SelectItem(i+" testItem");
>         }
>         this.savedSearchesMenu = new HtmlSelectOneMenu();
>         //add an emtpy Select Item
> 	  		UISelectItem uiItem = new UISelectItem();
>         uiItem.setValue( new SelectItem(""));
>         this.savedSearchesMenu.getChildren().add(0, uiItem);
>         //add the saved searches
>         UISelectItems uiItems = new UISelectItems();
>         uiItems.setValue(selectItems);
>         this.savedSearchesMenu.getChildren().add(uiItems);
>         return selectItems;
> 	}
> 	
> 	/**
> 	 * Action Listener to show detailed document profile data.
> 	 * 
> 	 * @param ae The ActionEvent
> 	 */
> 	public void doImmediate(ActionEvent ea) {
> 		System.out.println ("doImmediate called");
> 		// This causes the current View tree to be discarded and a fresh one created.
> 		// The new components of course then have no submitted values, 
> 		// and so fetch their displayed values via their value-bindings.
> 		FacesContext context = FacesContext.getCurrentInstance();
> 	  ViewHandler viewHandler = context.getApplication().getViewHandler();
> 	  UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
> 	  context.setViewRoot(viewRoot);
> 	  context.renderResponse();
> 	}
> 	/**
> 	 * Action Listener to show detailed document profile data.
> 	 * 
> 	 * @param ae The ActionEvent
> 	 */
> 	public void doNormal(ActionEvent ea) {
> 		System.out.println ("do normal called");
> 	}
> }
> Output after clicking the immedaite link
> with 1.1.3:
> *** setSavedSearchesMenu called
> doImmediate called
> getSavedSearchesMenu called
> with 1.1.4:
> *** setSavedSearchesMenu called
> doImmediate called
> getSavedSearchesMenu called
> *** setSavedSearchesMenu called
> The obvious difference is the 2.nd call of the setter.
> The parameter savedSearchesMenu (of type HtmlSelectOneMenu) is not initialized anymore.
> All attributes are null or false except _valid which is true.
> URL of the discussion:
> http://marc.theaimsgroup.com/?l=myfaces-user&m=115953578324128&w=2

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

        

[jira] Resolved: (MYFACES-1430) selectOneMenu looses values after clicking immediate link (since 1.1.4)

Posted by "Thomas Spiegl (JIRA)" <de...@myfaces.apache.org>.
     [ http://issues.apache.org/jira/browse/MYFACES-1430?page=all ]

Thomas Spiegl resolved MYFACES-1430.
------------------------------------

    Resolution: Fixed

Thanks for the testcase Michael!!

Patch for MyFaces-1301 broke createComponent in class ApplicationImpl.


> selectOneMenu looses values after clicking immediate link (since 1.1.4)
> -----------------------------------------------------------------------
>
>                 Key: MYFACES-1430
>                 URL: http://issues.apache.org/jira/browse/MYFACES-1430
>             Project: MyFaces Core
>          Issue Type: Bug
>          Components: General
>    Affects Versions: 1.1.4
>         Environment: myFacesCore 1.1.4
> tomahawk 1.1.3
> Tomcat 5.5.17
> jdk 1.5.0.7
>            Reporter: Michael Heinen
>            Priority: Critical
>             Fix For: 1.1.5-SNAPSHOT
>
>         Attachments: ddTest.war
>
>
> After updating myFacesCore to 1.1.4 a selectOneMenu with a binding is not working anymore. 
> The used version of tomahawk is 1.1.3.
> The entries of the select one menu are cleared after clicking an immediate link.
> The BackingBean BBController has session scope.
> When I go back to myFacesCore 1.1.3 everything works fine!!!
> I attached a small demo webApp that everybody can reconstruct this behaviour.
>  
> JSP snippet:
> <f:view>
> <h:form id="myform">
> 	<h:panelGroup>
> 		<h:outputText value="MyDropdown" style="padding-right:10px;"/>
> 		<h:selectOneMenu id="lastSearch" binding="#{BBController.savedSearchesMenu}"/>
> 	</h:panelGroup>
>    <h:outputText value="<br/><br/>" escape="false"/>
>    <h:commandLink actionListener="#{BBController.doImmediate}" value="doImmediate" immediate="true"></h:commandLink>
>    <h:outputText value="<br/><br/>" escape="false"/>
>    <h:commandLink actionListener="#{BBController.doNormal}" value="doNormal"></h:commandLink>
> </h:form>
> </f:view>
> BBController snippet:
> public class BackingBean implements Serializable {
> 	private static final long serialVersionUID = 1L;
> 	private transient UISelectOne savedSearchesMenu; 
> 	public BackingBean() {}
> 	
> 	public UISelectOne getSavedSearchesMenu() {
> 		System.out.println ("getSavedSearchesMenu called");
> 		if (this.savedSearchesMenu==null){
> 			this.populateSavedSearchesMenu();  
> 		}
> 		return this.savedSearchesMenu;
> 	}
> 	
> 	public void setSavedSearchesMenu(UISelectOne savedSearchesMenu) {
> 		System.out.println ("*** setSavedSearchesMenu called");
> 		this.savedSearchesMenu = savedSearchesMenu;
> 	}
> 	
> 	private SelectItem[] populateSavedSearchesMenu(){
>         SelectItem[] selectItems = new SelectItem[5];
>         for (int i=0; i<5; i++) {
>         	selectItems[i] = new SelectItem(i+" testItem");
>         }
>         this.savedSearchesMenu = new HtmlSelectOneMenu();
>         //add an emtpy Select Item
> 	  		UISelectItem uiItem = new UISelectItem();
>         uiItem.setValue( new SelectItem(""));
>         this.savedSearchesMenu.getChildren().add(0, uiItem);
>         //add the saved searches
>         UISelectItems uiItems = new UISelectItems();
>         uiItems.setValue(selectItems);
>         this.savedSearchesMenu.getChildren().add(uiItems);
>         return selectItems;
> 	}
> 	
> 	/**
> 	 * Action Listener to show detailed document profile data.
> 	 * 
> 	 * @param ae The ActionEvent
> 	 */
> 	public void doImmediate(ActionEvent ea) {
> 		System.out.println ("doImmediate called");
> 		// This causes the current View tree to be discarded and a fresh one created.
> 		// The new components of course then have no submitted values, 
> 		// and so fetch their displayed values via their value-bindings.
> 		FacesContext context = FacesContext.getCurrentInstance();
> 	  ViewHandler viewHandler = context.getApplication().getViewHandler();
> 	  UIViewRoot viewRoot = viewHandler.createView(context, context.getViewRoot().getViewId());
> 	  context.setViewRoot(viewRoot);
> 	  context.renderResponse();
> 	}
> 	/**
> 	 * Action Listener to show detailed document profile data.
> 	 * 
> 	 * @param ae The ActionEvent
> 	 */
> 	public void doNormal(ActionEvent ea) {
> 		System.out.println ("do normal called");
> 	}
> }
> Output after clicking the immedaite link
> with 1.1.3:
> *** setSavedSearchesMenu called
> doImmediate called
> getSavedSearchesMenu called
> with 1.1.4:
> *** setSavedSearchesMenu called
> doImmediate called
> getSavedSearchesMenu called
> *** setSavedSearchesMenu called
> The obvious difference is the 2.nd call of the setter.
> The parameter savedSearchesMenu (of type HtmlSelectOneMenu) is not initialized anymore.
> All attributes are null or false except _valid which is true.
> URL of the discussion:
> http://marc.theaimsgroup.com/?l=myfaces-user&m=115953578324128&w=2

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