JSF Primefaces:selectOneMenu,actionListeners在选择Value后不起作用

时间:2012-11-17 15:51:36

标签: java jsf primefaces

我在我的表单中选择了一个带转换器的菜单:

<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>

问题:如果菜单的形式相同,则commandButton不会做出反应,也不会调用我的Bean中的方法deleteValue()。

编辑:如果我选择了该框的值,则此表单中的任何按钮都不会调用。

我在我的Bean中为此创建了所有值:

 @PostConstruct
        public void initAllValues() {

            allValues = service.getAllValues();
        }

我的转换器

这就是我的转换器的外观:

    @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());
    }
}

0 个答案:

没有答案