- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 EnumConverter,如 Use enum in h:selectManyCheckbox 中所述。 ?一切都很好,直到我们认识到该转换器在 primefaces 可编辑数据表中无法正常工作。问题是,尽管我在 getAsString 和 getAsObject 方法中添加了一个属性,如下所示:
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
if (value instanceof Enum) {
component.getAttributes().put(ATTRIBUTE_ENUM_TYPE, value.getClass());
return ((Enum<?>) value).name();
} else {
throw new ConverterException(new FacesMessage("Value is not an enum: " + value.getClass()));
}
}
public Object getAsObject(FacesContext context, UIComponent component, String value) {
Class<Enum> enumType = (Class<Enum>) component.getAttributes().get(ATTRIBUTE_ENUM_TYPE);
try {
return Enum.valueOf(enumType, value);
} catch (IllegalArgumentException e) {
throw new ConverterException(new FacesMessage("Value is not an enum of type: " + enumType));
}
}
在后一个方法(getAsObject
)中找不到我赋予组件属性映射的属性。但在 pprimefaces 可编辑数据表之外,一切都很好。有什么解决方案可以实现这一点吗?
最佳答案
出现此问题的原因是自定义组件属性未保存在 PrimeFaces 数据表的行状态中(在标准 h:dataTable
中工作正常)。
我们需要将此信息存储在其他地方。在 View 范围内加上组件 ID 是一种方法。
在getAsString()
中:
context.getViewRoot().getViewMap().put(ATTRIBUTE_ENUM_TYPE + component.getId(), value.getClass());
在getAsObject()
中:
Class<Enum> enumType = (Class<Enum>) context.getViewRoot().getViewMap().get(ATTRIBUTE_ENUM_TYPE + component.getId());
关于jsf-2 - primefaces 可编辑数据表中的 EnumConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12581958/
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我编写了一个 EnumConverter,如 Use enum in h:selectManyCheckbox 中所述。 ?一切都很好,直到我们认识到该转换器在 primefaces 可编辑数据表中无
我正在使用 CsvHelper将一个类序列化为 csv 文件 - 直到这里一切正常。 现在我试图找到一种方法将类的枚举属性转换为它们在 csv 中的 int 值,这样我以后就可以使用 CSV 进行批量
我无法找到完整的示例,因此我认为我在某处遗漏了一部分。我收到一条映射错误消息,特别是“将记录映射到类时发生错误...”。 我的枚举: public enum CustomType { Cust
枚举: public enum OrderStatus { New("New"), Paid("Paid"), Shipped("Shipped"), Complete
我是一名优秀的程序员,十分优秀!