i have a Java EE setup with JSF and primefaces and i'm trying to generate a selection, based on the chosen entry in a <selectOneMenu>.
My problem is that the selectManyCheckbox (or any other similar ui element) has all items filled in correctly and the items are selectable, but if a selection was made, the action of the commandButton doesn't get called. 
I've set a breakpoint on the method. If I don't choose any item, the breakpoint gets hit, if I choose any amount of items greater than zero, the breakpoint doesn't get hit. 
I read that one solution could be to define a converter. I tried that and if I set a breakpoint, it correctly converts the items, I chose, but nevertheless the method, defined as action, doesn't get called.
Btw: Sorry for german code, i'm a german and naming the methods and variables in german was set by guideline
The xhtml File:
<h:form>
            <p:panelGrid columns="2">
            <p:outputLabel for="kennzeichenInput">Kennzeichen: </p:outputLabel>  
            <p:inputText id="kennzeichenInput"></p:inputText> 
            <p:outputLabel for="studiengang">Studiengang: </p:outputLabel>
            <p:selectOneMenu id="studiengang" value="#{registrationsController.gewaehlterStudiengang}">
                <f:selectItem itemValue="#{null}" itemLabel="--Studiengang aussuchen--"/>
                <f:selectItems value="#{registrationsController.getAlleStudiengaenge()}"/>
                <p:ajax value="valueChange" update="vorlesungenInStudiengang" listener="#{registrationsController.onStudiengangGeaendert}"/>
            </p:selectOneMenu>      
            </p:panelGrid>
            <h:selectManyCheckbox  id="vorlesungenInStudiengang" 
                value="#{registrationsController.gewaehlteVorlesungen}" 
                label="Vorlesungen" converter="de.phwt.parkhwt.domain.converter.vorlesung_converter">
                <f:selectItems value="#{registrationsController.vorlesungen}"/>
            </h:selectManyCheckbox > 
            <p:commandButton value="Registrieren" type="submit" action="#{registrationsController.registriereKennzeichen()}"/>
</h:form>
The Bean:
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import javax.enterprise.context.RequestScoped;
import javax.faces.event.AjaxBehaviorEvent;
import javax.inject.Inject;
import javax.inject.Named;
import de.phwt.parkhwt.domain.CollectionKonverter;
import de.phwt.parkhwt.domain.KennzeichenRepository;
import de.phwt.parkhwt.domain.Studiengang;
import de.phwt.parkhwt.domain.Vorlesung;
@RequestScoped
@Named
public class RegistrationsController
{
    @Inject
    private KennzeichenRepository repository;
    private String gewaehlterStudiengang;
    private List<Vorlesung> vorlesungen;
    private List<Vorlesung> gewaehlteVorlesungen;
    public String getGewaehlterStudiengang()
    {
        return gewaehlterStudiengang;
    }
    public void setGewaehlterStudiengang(String gewaehlterStudiengang)
    {
        this.gewaehlterStudiengang = gewaehlterStudiengang;
    }
    public List<Vorlesung> getVorlesungen()
    {
        return vorlesungen;
    }
    public void setVorlesungen(List<Vorlesung> vorlesungen)
    {
        this.vorlesungen = vorlesungen;
    }
    public Vorlesung getVorlesung(String name)
    {
        return this.repository.sucheVorlesung(name);
    }
    public List<Vorlesung> getGewaehlteVorlesungen()
    {
        return gewaehlteVorlesungen;
    }
    public void setGewaehlteVorlesungen(List<Vorlesung> gewählteVorlesungen)
    {
        this.gewaehlteVorlesungen = gewählteVorlesungen;
    }
    public Set<Studiengang> getAlleStudiengaenge()
    {
        return repository.getAlleStudiengaenge();
    }
    public List<Vorlesung> getVorlesungenDesStudiengangs(String gewaehlterStudiengang)
    {
        Studiengang studiengang = repository.sucheStudiengang(gewaehlterStudiengang);
        return CollectionKonverter.toList(studiengang.getVorlesungen());
    }
    public String registriereKennzeichen()
    {
        return "";
    }
    public void onStudiengangGeaendert(AjaxBehaviorEvent event)
    {
        if (getGewaehlterStudiengang() != null)
        {
            setVorlesungen(getVorlesungenDesStudiengangs(getGewaehlterStudiengang()));
        }
        else
        {
            setVorlesungen(new ArrayList<Vorlesung>());
        }
    }
}
The Converter:
import javax.el.ValueExpression;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;
import javax.inject.Inject;
import de.phwt.parkhwt.controller.RegistrationsController;
@FacesConverter("de.phwt.parkhwt.domain.converter.vorlesung_converter")
public class VorlesungConverter implements Converter
{
    @Inject
    KennzeichenRepository repository;
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value)
    {
        ValueExpression vex =
                context.getApplication()
                        .getExpressionFactory()
                        .createValueExpression(context.getELContext(),
                                "#{registrationsController}", RegistrationsController.class);
        RegistrationsController reg = (RegistrationsController) vex.getValue(context.getELContext());
        Vorlesung vorlesung = reg.getVorlesung(value);
        return vorlesung;
    }
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value)
    {
        if (value.getClass() == new Vorlesung().getClass())
        {
            Vorlesung v = (Vorlesung) value;
            return v.getName();
        }
        return null;
    }
}
 
    