java - Facelet 解析或标记 <h :inputText id ="text"/> is parsing 时发生的情况

标签 java xml jsf xhtml

我有一个简单的 Web 应用程序,其中包含 Facelet index.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html">
      <body> <h:inputText id="text"/> </body>
</html>

我感兴趣编译器解析时详细发生的情况 <h:inputText id=text"/> 。我希望它能帮助我实现JSF 。我假设操作顺序是:

  1. 编译器将通过xmlns:h="http://xmlns.jcp.org/jsf/html"进入命名空间并在这种情况下尝试查找标签 inputText。
  2. 如果标签成立,编译器运行由例如 <handler-class>com.example.SomeHandler</handler-class> 定义的标签处理程序在标签 <tag></tag> 内.
  3. 通过hadler编译器发现的标签UIComponent类和渲染器类,对应于该标签。

我认为,我对解析过程的理解有误,因为渲染器类注册到 component family ...请解释一下正确的操作顺序。

最佳答案

你比你知道的更接近答案。 Facelets 使用与 JSP 类似的 taglib,它们在 .taglib.xml 文件中声明,看起来与此类似

<facelet-taglib>
  <namespace>http://www.mycompany.com/jsf</namespace>
  <tag>
    <tag-name>bar</tag-name>
    <component>
      <component-type>javax.faces.Data</component-type>
      <renderer-type>com.mycompany.Bar</renderer-type>
    </component>
  </tag>
</facelet-taglib>

taglib 文件中的命名空间元素引用您将在 Facelets 文档(在 xmlns 属性中)中使用的 URL 来引用此 taglib,同时各个标记元素定义 taglib 中的各个标记。

在上述标签库的情况下,您将使用像这样定义的“bar”标签

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:m="http://www.mycompany.com/jsf">
    <body><m:bar/></body>
</html>

通过执行此操作,facelets 将查找与命名空间“http://www.mycompany.com/jsf”关联的 taglib,找到“bar”的标签定义,然后使用定义中发现的 UIComponent 来呈现该标签所需的输出。

关于java - Facelet 解析或标记 <h :inputText id ="text"/> is parsing 时发生的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20441264/

相关文章:

java - 解决使用javaagent命令时出现java.lang.NoClassDefFoundError异常

java - 将 XML 文件转换为字符串,无需在 Java 中进行操作或优化

jsf - JSF 是否支持 MVVM 设计模式?

java - Primefaces 应用程序无法运行

java - JSF 和 ui 中的嵌套 ajax :repeat

java - 升级后启动服务器时出现 Resteasy 错误。 "both mapped to the url-pattern [/RESTEASY_HttpServlet30Dispatcher] which is not permitted"

java - mongodb:java:如何使用具有现有值的表达式更新 MongoDB 中的字段

sql-server - SSIS将具有不同类型列的表导出到平面文件中

java - XML 字符串到对象数组

jobs - JSprit 中的相关职位