1

JSF2.0 で複合コンポーネントをテストするためのサンプル プロジェクトを開発しました。

ここに私のサンプルコードがあります

私のテストファイル

<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"
  xmlns:tp="http://java.sun.com/jsf/composite/test"
  >
<h:body>
    <h:form>
    <h:outputLabel value="Success"/>
       <tp:loginComponent 
          usernameLabel="Enter User Name: " 
          usernameValue="#{login.name}" />
    </h:form>
</h:body>  

<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="usernameLabel" />
        <composite:attribute name="usernameValue" />
    </composite:interface>
    <composite:implementation>
        <h:form>
            #{cc.attrs.usernameLabel} : 
            <h:inputText id="username" value="#{cc.attrs.usernameValue}" />
        </h:form>
    </composite:implementation>

Websphere 8.5 にデプロイすると、複合コンポーネントがレンダリングされません。問題の特定にご協力ください

ありがとう

4

1 に答える 1

2

ファイルの場所と名前を調整する必要があります。そうしないと、JSF はそれを見つけられません。

この線

xmlns:tp="http://java.sun.com/jsf/composite/test"

JSF をフォルダーresources/test(Web ページのルートに相対的) にポイントします。WebContent が Web ページのルートであると仮定すると、リソース フォルダーはその中にあるはずです。

JSF は<tp:loginComponent .... />、フォルダ内で .xml ファイルを探しますloginComponent.xhtml

編集

リソース フォルダーにはさまざまな種類のリソースが存在する可能性があるため、コンポーネント用のサブフォルダーを作成することをお勧めします。私は通常それをコンプと呼んでいます。したがって /WebContent/resources/comps、このフォルダー内のパスの場所はloginComponent.xhtml、コンポーネントで名前が付けられたファイルになります。

名前空間の行を次のように変更します: xmlns:tp="http://java.sun.com/jsf/composite/comps"(comps がリソースにあることは暗示されていますが、URL では指定されていません)。

Java ee チュートリアルも参照してください。

于 2013-08-29T05:56:04.960 に答える