【问题标题】:JSF 1.2 : Can I create reusable component inside JSF viewJSF 1.2:我可以在 JSF 视图中创建可重用的组件吗
【发布时间】:2012-05-31 19:09:26
【问题描述】:

在 jsf 中可以做这样的事情吗?

<ui:composition>
  <x:reusableCode id="editScreen">InnerHtml ... </x:reusableCode>
  code...
  <x:use component="editScreen"/>
</ui:composition

我知道我可以创建自己的组件并将其注册到 jsf tagLib 中,但我只需要在 jsf 视图文件中使用可重用的 HTML。

【问题讨论】:

  • 对不起,我忘了把这个添加到摘要中。我使用 1.2

标签: jsf components code-reuse


【解决方案1】:

在 Facelets 1.x 中,您可以为此创建一个标记文件。

这是一个基本的启动示例。创建/WEB-INF/tags/some.xhtml

<ui:composition 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
>
    <h:outputText value="#{foo}" />
</ui:composition>

定义在/WEB-INF/my.taglib.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE facelet-taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">

<facelet-taglib>
    <namespace>http://example.com/jsf/facelets</namespace>
    <tag>
        <tag-name>some</tag-name>
        <source>/WEB-INF/tags/some.xhtml</source>
    </tag>
</facelet-taglib>

/WEB-INF/web.xml注册:

<context-param>
    <param-name>facelets.LIBRARIES</param-name>
    <param-value>/WEB-INF/my.taglib.xml</param-value>
</context-param>

(注意,如果有多个,用分号;隔开)

最后只需在您的主页模板中声明它。

<ui:composition 
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:my="http://example.com/jsf/facelets"
>
    <my:some foo="value1" />
    <my:some foo="value2" />
    <my:some foo="value3" />
</ui:composition>

可以在此处找到更高级的示例:How to make a grid of JSF composite component? 注意:针对 JSF 2.0,但在上面示例的基础上稍作更改,它在 Facelets 1.x 上也能正常工作。

【讨论】:

  • 感谢这种方法,但我认为有一种方法可以在一个 jsf 文件中创建可重用组件,而无需任何标签注册。 :)
  • 这有效,my.taglib.xml 中的 &lt;source&gt;/WEB-INF/tags/some.xhtml&lt;/source&gt; 元素除外。我必须将其更改为 &lt;source&gt;tags/some.xhtml&lt;/source&gt; 才能使其正常工作。
猜你喜欢
  • 2012-02-20
  • 2012-02-09
  • 1970-01-01
  • 1970-01-01
  • 2013-06-13
  • 2023-03-18
  • 2013-03-28
  • 2013-09-27
  • 1970-01-01
相关资源
最近更新 更多