我正在阅读Core JavaServer Faces 3rd edition我有一个关于 JSF 页面编码和解码的问题。
当页面即将呈现时,它将首先浏览包含 JSF 标记的 XHTML 页面。每个 JSF 标记都有一个自己的标记处理程序类,它们协作创建该页面的组件树。所有其他标签都将被忽略。
每个组件都有一个自己的渲染器,它知道如何生成 HTML。现在书上说:
(这是一个 h:inputText 标签)
Each component has a renderer that produces HTML output, reflecting the component state. The renderer of the UIInput object asks the JSF implementation to look up the unique ID and the current value fo the expression user.name.
问题是:
为什么书中说实现要求表达式user.name
的当前值?我希望实现改为询问组件 - 在本例中为 UIInput
- 该组件对这个用户 bean 有一些引用?因为,该类不“反射(reflect)”代码中的 JSF 标记吗?
我可能误解了这个概念,我想学习它。
最佳答案
获取 EditableValueHolder
的输出值与 UIInput
类似,Renderer
通常会调用 getValue()
。这通常会返回:
- 如果输入验证或转换失败,则来自
getSubscribedValue()
的值 - 通过调用
setValue(Object)
显式设置的对象(如果有) 值
的结果ValueExpression
如果有的话
组件定义行为。理想情况下,它应该与渲染器、标记和数据源松散耦合。该组件并不关心它的数据源是什么——它不必是托管 bean。获取和设置值是 ValueExpression
的职责。
ValueExpression
的计算结果取决于 context .
关于java - JSF 页面的编码和解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769552/