java - JSF 页面的编码和解码

标签 java jsf jakarta-ee

我正在阅读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()。这通常会返回:

  1. 如果输入验证或转换失败,则来自 getSubscribedValue() 的值
  2. 通过调用 setValue(Object) 显式设置的对象(如果有)
  3. 的结果 ValueExpression如果有的话

组件定义行为。理想情况下,它应该与渲染器、标记和数据源松散耦合。该组件并不关心它的数据源是什么——它不必是托管 bean。获取和设置值是 ValueExpression 的职责。

ValueExpression 的计算结果取决于 context .

关于java - JSF 页面的编码和解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8769552/

相关文章:

java - 如何正确地将 JTextPane/JPanel 打包到 JPanel 中到 JScrollPane 中?

java - 如何将日志记录与异常处理链结合起来?

jsf 输出 html 格式的文本

javascript - 关闭前发生火灾事件 p :dialog

spring - 有什么理由使用接口(interface)(Java EE 或 Spring 和 JPA)

java - Android:AudioTrack 无法正常工作

从 JSF Managed Bean 执行的 JavaScript 代码不起作用

java - 难以理解 Java EE 7 开发人员手册的开头页面

java - 为什么我无法使用 JPA 连接数据库?

java - 给定的 Artifact 包含一个字符串文字,其包引用为 'android.support.v4.widget',无法安全重写