java - PrimeFaces validator 属性方法中的 NPE

标签 java primefaces selectonemenu

我尝试使用 validator 属性验证 p:selectOneMenu,但在验证方法中对象的值为 null。我不明白为什么它是空的,有人可以帮助我。我正在使用 PrimeFaces 6.2。

我的xhtml是:

<p:selectOneMenu id="somFieldType"
                 widgetVar="somFieldType"
                 converter="entityConverter"
                 required="false"
                 value="#{paramDetail.article_field_type}"
                 validator="#{detailArticleBean2.isTypeValid}"
                 ... >
    <f:selectItem itemLabel="#{i18n['avocado.general.seleccionar']}" itemValue="0"/>
    <f:selectItem itemLabel="#{i18n['avocado.general.texto']}" itemValue="1"/>
    ...
</p:selectOneMenu>

在我的 bean 中,我只打印值:

public void isTypeValid(FacesContext ctx, UIComponent component, Object value) throws ValidatorException {
    System.out.println(value.toString());
}

控制台返回错误:

javax.el.ELException: /Ref/Art/artDetail.xhtml @165,67 validator="#{detailArticleBean2.isTypeValid}": java.lang.NullPointerException
at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)

非常感谢您的帮助。

最佳答案

您的值为null,因此您无法应用.toString()。使用类似的东西:

public void isTypeValid(FacesContext ctx, UIComponent component, Object value) throws ValidatorException {
    if (value == null) {
        // Value is unset; don't validate
        return;
    }
    // Value is set; do validation
    ...
}

另请参阅:

关于java - PrimeFaces validator 属性方法中的 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66874782/

相关文章:

c# - gzip 格式流式传输

java - 如何获取列表中字符串的索引

html - 更改 primefaces 选择列表的宽度

jsf - SelectOneMenu 中的 PrimeFaces 和可见自动完成

JSF/PrimeFaces selectOneMenu 更改 View ID

java - 从网络元素列表中删除逗号和分号

java - native 查询上的 Mockito NullPointerException

css - 禁用 primefaces 数据表的选择样式

css - 更改 Accordion 面板选项卡的颜色

java - Primefaces selectOneMenu 过滤器不起作用