Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EL getType obj.property1.sub_属性_Java_Jsf 2_El - Fatal编程技术网

Java EL getType obj.property1.sub_属性

Java EL getType obj.property1.sub_属性,java,jsf-2,el,Java,Jsf 2,El,我想获取对象obj的子属性的类型,它可以作为 对象属性1.子属性 此代码仅适用于直接属性,如obj.property FacesContext.getCurrentInstance().getApplication(). getELResolver().getType(FacesContext.getCurrentInstance().getELContext(), obj, "property1"); 但是,如何使这项工作 FacesContext.g

我想获取对象obj的子属性的类型,它可以作为

对象属性1.子属性

此代码仅适用于直接属性,如obj.property

FacesContext.getCurrentInstance().getApplication().
     getELResolver().getType(FacesContext.getCurrentInstance().getELContext(),
     obj, "property1");
但是,如何使这项工作

FacesContext.getCurrentInstance().getApplication().
     getELResolver().getType(FacesContext.getCurrentInstance().getELContext(),
     obj, "property1.sub_property");

或者如何获取完整表达式的类型{obj.property1.sub_property}

只有当obj.preperty1不为null时,才能执行此操作,除非我们有null指针异常

new ExpressionFactoryImpl().createValueExpression(
     FacesUtils.getFacesContext().getELContext(),
     expr, Object.class).getType(
     FacesUtils.getFacesContext().getELContext())
因为正如kolossus提到的,它将评估第一部分,然后评估第二部分…

这就是ELResolver的工作方式。即使在封面下,每个构件也要单独评估

根据规范的要求:

ELResolver概念是统一EL的核心…例如,在呈现标记后面的组件时,ELResolver被调用三次。一次解析用户,再次解析用户的地址属性,最后解析地址的街道属性

翻译:
您需要分别评估属性1和子属性。我正在电话上键入此内容,因此稍后我将添加一个代码示例

错误,有时您需要在不进行评估的情况下获取该类型,以便我发布的解决方案更好,谢谢way@user3252285-我没有说一个比另一个好;如果你读了我这里的内容,我说ELResolver。我在解释ELResolver的行为,但你说你需要分别计算property1和subproperty,我的解决方案能够检测到一个更复杂的表达式,比如{bean.formatValueobj.value}@user3252285,如果你使用ELResolver,你需要对每个表达式进行计算。同样,不要批评你的解决方案你是对的,内在地,它会评估每个变量。如果这个答案对你有效,你需要添加一些措辞或解释。就目前而言,它的质量不高