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

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

     [ 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