jsf - javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 自 Java EE 7/EL 3.0 起不再工作

标签 jsf el jsf-2.2 java-ee-7

<context-param>
    <param-name>javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL</param-name>
    <param-value>true</param-value>
</context-param>

不适用于 glassfish 4 和 wildfly 8 Final 上的最新 Mojarra 2.2.5

我已经看到了关于此的多个错误报告,Manfried Riem says ,

It was determined this is an EL issue and the EL implementation has been fixed to fix this

修复版本显示为 2.2.5,并且在 2.2.5 的发行说明中也有说明,我是否遗漏了什么?

最佳答案

使用自定义解析器修复:

faces-config.xml:

<application>
     <el-resolver>my.package.EmptyNullStringResolver</el-resolver>
</application>

EmptyNullStringResolver.java:

/**
 * @author pg
 */
public class EmptyNullStringResolver extends ELResolver {

    @Override
    public Class<?> getCommonPropertyType(ELContext context, Object base) {
        return String.class;
    }

    @Override
    public Iterator<FeatureDescriptor> getFeatureDescriptors(ELContext context, Object base) {
        return null;
    }

    @Override
    public Class<?> getType(ELContext context, Object base, Object property) {
        return null;
    }

    @Override
    public Object getValue(ELContext context, Object base, Object property) {
        return null;
    }

    @Override
    public boolean isReadOnly(ELContext context, Object base, Object property) {
        return true;
    }

    @Override
    public void setValue(ELContext context, Object base, Object property, Object value) {
    }

    @Override
    public Object convertToType(ELContext context, Object obj, Class<?> targetType) {
        if (String.class.equals(targetType) && obj instanceof String && ((String) obj).trim().isEmpty()) {
            context.setPropertyResolved(true);
        }
        return null;
    }
}

关于jsf - javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL 自 Java EE 7/EL 3.0 起不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21880017/

相关文章:

primefaces - 避免p :treeTable to collapse after update的节点

jsf - 在 primefaces 中进行单元格编辑后,CellEdit 事件不起作用

JSF 将模板呈现为文本/纯文本

java - 重写旧的/不推荐使用的代码java

jsf - org.apache.el.parser.ParseException : Encountered "" }""} "" at line 1, 第 3 列

java - 如何让表达式语言跨多个jsp页面跳转?

java - 基于a4j的RichFaces按钮启用禁用:status

jsf - 迭代 primefaces 数据表中的 List<Map<String, String>> ?

java - <view-handler>com.sun.facelets.FaceletViewHandler</view-handler>

java - JSF 不报告未定义的 bean