我在与myView
bean关联的XHTML文档中有这段代码。
<p:outputtext value="#{myView.getDynamicContent()}" />
方法getDynamicContent()
返回的文本有时包含另一个PrimeFaces标签,例如<p:inputMask>
。
当计算第一个<p.outputtext>
时,它将方法返回的所有内容打印为文本,并且没有计算!
我能解决这个问题还是不可能?如果不可能,我想用<input>
标签替换所有<p:inputMask>
。在这种情况下,我如何恢复插入到Java视图代码中的输入标记的值?
你想做的不是最好的事情。添加到原始xhtml页面中的标记不会直接转换为HTML标记。首先,为每个jsf标签创建一个组件,并将其添加到组件树中。只有在树完成之后,表达式才会被求值。你的表达式不能改变组件树,因为它只会被评估为组件对象的"值"字段。只有在最后的Render Response阶段,这个值才会被添加到HTML标记中。正如BalusC已经指出的那样,如果使用c:if c:when标记来创建动态组件标记,而不是使用后台bean中的java代码生成标记,效果会更好。如果您坚持您的解决方案,那么最后一个问题的答案是,您总是可以直接使用HttpServletRequest对象访问与表单一起提交的输入的值。你总是可以从FacesContext中获得它