Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Last version of primefaces (version 6.1.5) broke some function on selectCheckboxMenu #2734

Closed
mibrahim-iti opened this issue Sep 18, 2017 · 2 comments
Assignees

Comments

@mibrahim-iti
Copy link

I am using selectCheckboxMenu tag in my code and in it was working fine with PrimeFaces jar (6.1.3, 6.1.4) as it was adding selections to list and remove it also from list after deselected it from menu.
But in last version of PrimeFaces (6.1.5) remove from list doesn't work anymore and i tried it also using events (ValueChangeEvent and AjaxBehaviorEvent) to see what happen and i am sure remove is not working anymore as expected

1) Environment

  • PrimeFaces 6.1.5:
  • Does it work on the newest released PrimeFaces version? Version?
    It Doesn't work with PrimeFaces 6.1.5 (which is last one at this moment)
  • Does it work on the newest sources in GitHub? (Build by source -> https://github.com/primefaces/primefaces/wiki/Building-From-Source)
    I didn't try to clone from github, i am using last primefaces jar (version 6.1.5)
  • Application server + version: Liberty 17.0.0.2
  • Affected browsers: Firefox

2) Expected behavior

Remove items or values from back bean list after deselected it from check box menu
...

3) Actual behavior

Ignoring my newest dis-select of actual values on selected list and kept old values as is
..

4) Steps to reproduce

  • add items from menu to list (working fine)
  • remove items from menu (not reflected in list and old values appears)

1- i had initialized some default selected values in list so it will appears selected once i open the menu
1
2- uncheck any language from selected ones, for example i unchecked Spanish language
2
3- click save
3
4- open the menu again, you will see same old values and it's not updated at all
4

..

5) Sample XHTML

<?xml version="1.0" encoding="UTF-8"?>
<!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:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">

<h:head>
</h:head>
<h:body>
	<h1>Test issue</h1>

	<h:form>
	   <p:selectCheckboxMenu id="organisationSupportedLanguages" value="#{testView.supportedLanguages}" label="#{msgsTou.supportedLanguages}" 
			filter="true" filterMatchMode="startsWith" panelStyle="width: 310px;" style="width: 280px;" > <!-- valueChangeListener="#{testView.handleSelectionValueChange}" -->
            <f:selectItems value="#{testView.availableLanguages}" />
<!--             <f:ajax listener="#{testView.handleSelectionAjaxBehavior}" /> -->
        </p:selectCheckboxMenu>
        <br /><br />
        <p:commandButton value="Save" title="Save" style="float: middle" update="@form"  actionListener="#{testView.save()}" />
	</h:form>

</h:body>
</html>

..

6) Sample bean

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.component.UIOutput;
import javax.faces.event.AjaxBehaviorEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.view.ViewScoped;
import javax.inject.Named;

@Named
@ViewScoped
public class TestView implements Serializable {
	private static final long serialVersionUID = 1L;

	private Map<String, String> availableLanguages;
	private List<String> supportedLanguages;

	@PostConstruct
	public void postConstruct() {
		availableLanguages = new HashMap<>();
		availableLanguages.put("Arabic", "ar");
		availableLanguages.put("English", "en");
		availableLanguages.put("Spanish", "es");
		availableLanguages.put("French", "fr");
		availableLanguages.put("German", "de");
		availableLanguages.put("Italy", "it");
		
		supportedLanguages = new ArrayList<>();
		supportedLanguages.add("ar");
		supportedLanguages.add("en");
		supportedLanguages.add("es");
	}

	@SuppressWarnings("unchecked")
	public void handleSelectionValueChange(ValueChangeEvent evt) {
		List<String> oldValues = (List<String>) evt.getOldValue();
		System.out.println(oldValues.size());
		List<String> newValues = (List<String>) evt.getNewValue();
		System.out.println(newValues.size());
	}

	@SuppressWarnings("unchecked")
	public void handleSelectionAjaxBehavior(final AjaxBehaviorEvent event) {
		List<String> selections = (List<String>) ((UIOutput) event.getSource()).getValue();
		System.out.println(selections.size());
	}

	public void save() {
		System.out.println(supportedLanguages.size());
	}

	public Map<String, String> getAvailableLanguages() {
		return availableLanguages;
	}

	public void setAvailableLanguages(Map<String, String> availableLanguages) {
		this.availableLanguages = availableLanguages;
	}

	public List<String> getSupportedLanguages() {
		return supportedLanguages;
	}

	public void setSupportedLanguages(List<String> supportedLanguages) {
		this.supportedLanguages = supportedLanguages;
	}

}

..

@mibrahim-iti mibrahim-iti changed the title Last version of primefaces broke some function on selectCheckboxMenu Last version of primefaces (version 6.1.5) broke some function on selectCheckboxMenu Sep 18, 2017
@mertsincan mertsincan self-assigned this Sep 18, 2017
@mertsincan
Copy link
Member

I'll check and get back to you.

@mertsincan
Copy link
Member

Fixed for next version.

#2724

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants