Java EL getType obj.property1.sub_属性
我想获取对象obj的子属性的类型,它可以作为 对象属性1.子属性 此代码仅适用于直接属性,如obj.propertyJava 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
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,你需要对每个表达式进行计算。同样,不要批评你的解决方案你是对的,内在地,它会评估每个变量。如果这个答案对你有效,你需要添加一些措辞或解释。就目前而言,它的质量不高