我在我的表单中选择了一个带转换器的菜单:
<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());
}
}