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
Facelets JSF 2表达式语言中的自定义数据类型_Jsf_Jsf 2_Facelets_El - Fatal编程技术网

Facelets JSF 2表达式语言中的自定义数据类型

Facelets JSF 2表达式语言中的自定义数据类型,jsf,jsf-2,facelets,el,Jsf,Jsf 2,Facelets,El,如何使用facelet表达式语言显示自定义属性 例如: <h:outputText value="#{contact.customTypeProperty}" /> 其中customTypeProperty的类型为CustomClass,我想显示其toString()返回的字符串 这应该已经是默认行为了。假设toString()方法在CustomClass上正确实现,则无需对给定的代码示例进行任何更改。但是,如果它返回HTML,则需要在输出文本中添加escape=“false”

如何使用facelet表达式语言显示自定义属性

例如:

<h:outputText value="#{contact.customTypeProperty}" />


其中customTypeProperty的类型为CustomClass,我想显示其toString()返回的字符串

这应该已经是默认行为了。假设
toString()
方法在
CustomClass
上正确实现,则无需对给定的代码示例进行任何更改。但是,如果它返回HTML,则需要在输出文本中添加
escape=“false”
,以防止JSF自动转义它(它这样做是为了防止XSS攻击用户控制的输入):


如果这样做是为了避免代码重复,那么实际上应该使用include文件或标记文件。另请参见

谢谢BalusC,该对象的toString以某种方式被调用。尽管它在CustomClass中被正确重写。请将
@Override
注释放在
toString()
方法上,以确保没有对方法签名进行任何键入更改。它必须是没有参数和抛出的
公共字符串toString(){}
。这里有覆盖符号,我想这个问题与JSF无关。wsimport不生成toString。所以问题就在那里。
<h:outputText value="#{contact.customTypeProperty}" escape="false" />
<h:panelGrid columns="2">
    <h:outputText value="Foo" />
    <h:outputText value="#{contact.customTypeProperty.foo}" />

    <h:outputText value="Bar" />
    <h:outputText value="#{contact.customTypeProperty.bar}" />
</h:panelGrid>