在Maven项目中实现JSF Composite Component

Ric*_*ich 0 jsf maven composite-component

似乎人们能够在SWF 2.3.1中实现复合组件,但我无法找到明确的参考方法.我已经遵循JSF复合组件的基本结构,但我的SWF应用程序似乎没有识别taglib命名空间.

有一个工具包/ IDE警告,但更重要的是在浏览器中看到运行时警告,JSF在屏幕上向用户显示以下警告:

Warning: This page calls for XML namespace http://java.sun.com/jsf/composite/myjsf declared with prefix mj but no taglibrary exists for that namespace.
Run Code Online (Sandbox Code Playgroud)

组件定义:

src/main/resources/myjsf/testComponent.xhtml:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:composite="http://java.sun.com/jsf/composite">

<composite:interface>
    <composite:attribute name="attr" />
</composite:interface>
<composite:implementation>

#{cc.attrs.attr});          

</composite:implementation>
</html>
Run Code Online (Sandbox Code Playgroud)

在给定的xhtml中引用:

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:mj="http://java.sun.com/jsf/composite/myjsf">

  <!-- snip -->

  <mj:testComponent attr="x" />

</ui:composition>
Run Code Online (Sandbox Code Playgroud)

par*_*lov 5

该文件夹src/main/resources/myjsf/不适合您的复合组件.maven项目中的复合组件应该src/main/webapp/resources/在你的情况下应该是src/main/webapp/resources/myjsf/testComponent.xhtml.

当您使用Maven时,您应该知道该webapp文件夹是其内容将部署在应用程序的根文件夹中的文件夹,因此它在某种程度上类似于WebContentEclipse中标准动态Web项目中的文件夹.