解释由outputText

时间:2016-08-25 17:33:00

标签: jsf primefaces dynamic-forms

我在这篇文章中有一个与myView bean关联的XHTML文档中的代码。

<p:outputtext value="#{myView.getDynamicContent()}" />

方法getDynamicContent()会返回有时包含其他PrimeFaces标记的文字,例如<p:inputMask>

当第一个<p.outputtext>被评估时,它会打印所有由方法作为文本返回并且它没有被评估!

我能解决这个问题还是不可能? 如果不可能,我会考虑将所有<p:inputMask>替换为<input>标记。在这种情况下,如何在Java视图代码中恢复插入到输入标记中的值?

1 个答案:

答案 0 :(得分:0)

你要做的不是最好的事情。您添加到原始xhtml页面的标记不会直接转换为HTML标记。首先,对于每个jsf标记,您将获得一个创建的组件,该组件将添加到组件树中。只有在树完成后才会计算表达式。并且您的表达式不能更改组件树,因为它只会被计算到组件对象的“value”字段中。并且只有在最后的渲染响应阶段,该值才会添加到HTML标记中。 就像BalusC已经注意到,如果你使用c创建动态组件标记将是netter:如果c:when标签而不是使用支持bean中的java代码生成标记。 如果您坚持使用您的解决方案,那么您对上一个问题的回答是,您始终可以使用HttpServletRequest对象直接访问使用表单提交的输入中的值。你总是可以从FacesContext获得它。