Java JSF Primefaces:selectOneMenu,actionListeners在选择值后不工作

Java JSF Primefaces:selectOneMenu,actionListeners在选择值后不工作,java,jsf,primefaces,Java,Jsf,Primefaces,我的表单中有一个带有转换器的“选择一”菜单: <h:form id="form"> <p:selectOneMenu id="id2" value="#{bean.selectedValue}" autoUpdate="true" converter="valueConverter"> <f:selectItems id="values"

我的表单中有一个带有转换器的“选择一”菜单:

<h:form id="form">
    <p:selectOneMenu id="id2"
                value="#{bean.selectedValue}" autoUpdate="true"
                converter="valueConverter">
                <f:selectItems id="values"
                    value="#{bean.allValues}" var="values"
                    itemLabel="#{values.name}" itemValue="#{values}" />
            </p:selectOneMenu>

<p:commandButton id="delete" value="delete" 
                    actionListener="#{bean.deleteValue}" />

</h:form>
我的转换器

以下是我的转换器的外观:

    @FacesConverter(value = "valueConverter")
public class ValueConverter implements Converter {

    ValueService valueService = new valueService();

public Object getAsObject(FacesContext context, UIComponent component, String value) {

    if (value.trim().equals("")) {
        return null;
    } else {
        try {
            List<MyValues> allValues = service.getAllValues();
            int id = Integer.parseInt(value);

            for (MyValues value : allValues) {
                if (value.getId() == id) {
                    return value;
                }
            }

        } catch(NumberFormatException exception) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid VALUE"));
        }
    }

    return null;
}

public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value == null || value == "") {
        return "";
    }
    else {
        return String.valueOf(((MyValues) value).getId());
    }
}
@facescoverter(value=“valueConverter”)
公共类ValueConverter实现转换器{
ValueService ValueService=新的ValueService();
公共对象getAsObject(FacesContext上下文、UIComponent组件、字符串值){
if(value.trim()等于(“”){
返回null;
}否则{
试一试{
List allValues=service.getAllValues();
int id=Integer.parseInt(值);
for(MyValues值:allValues){
if(value.getId()==id){
返回值;
}
}
}捕获(NumberFormatException异常){
抛出新ConverterException(新FacesMessage(FacesMessage.SEVERITY_错误,“转换错误”,“无效值”);
}
}
返回null;
}
公共字符串getAsString(FacesContext上下文、UIComponent、对象值){
如果(值==null | |值==“”){
返回“”;
}
否则{
返回字符串.valueOf(((MyValues)value.getId());
}
}

您的转换器可能存在问题,这会阻止按钮调用其actionListener。添加,您可能会获得更多信息感谢您的回答,我已添加了messages标记,没有收到任何错误消息/Warninghmm。请尝试对转换器进行调试/添加跟踪,我仍然会怀疑。可能会添加相关部分我想如果你将projectstage设置为developmentHi,你会收到一些转换器警告。我已经编辑了我的帖子并添加了我的转换器,我现在将调试转换器并给你回复。谢谢你的帮助。可能你需要更改转换器,因为Balusc在这里指出了otu
    @FacesConverter(value = "valueConverter")
public class ValueConverter implements Converter {

    ValueService valueService = new valueService();

public Object getAsObject(FacesContext context, UIComponent component, String value) {

    if (value.trim().equals("")) {
        return null;
    } else {
        try {
            List<MyValues> allValues = service.getAllValues();
            int id = Integer.parseInt(value);

            for (MyValues value : allValues) {
                if (value.getId() == id) {
                    return value;
                }
            }

        } catch(NumberFormatException exception) {
            throw new ConverterException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "Conversion Error", "Not a valid VALUE"));
        }
    }

    return null;
}

public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value == null || value == "") {
        return "";
    }
    else {
        return String.valueOf(((MyValues) value).getId());
    }
}