2010-12-03 10 views
1

this answerを読んだ後、私はまだ困惑しています。私は、JSTLを避け、その評価が間違った段階でどのように起こるかを理解することに同意します。ただし、facelets開発サイトのdocumentationでは、<ui:fragment>タグは2つの属性、つまりidbindingをサポートしているように見えます。だから、たとえ実装がrenderedをサポートしていても、それを利用する運命を誘惑しているようです。しかし、<h:panelGroup>を使用して、<div>要素を応答に挿入すると、(コンテンツをインラインからブロックに変更するなど)望ましくない副作用を引き起こす可能性があります。誰かがこれを回避する方法を知っていますか?特に、私は次の試みています:Faceletカスタムコンポーネント - レンダリングを防止する

基本的にはユーザーがそれらを編集することができます選択した名前と説明を持つ要素を選択するために使用するリストボックスである
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns:ice="http://www.icesoft.com/icefaces/component" 
    xmlns:f="http://java.sun.com/jsf/core" 
    xmlns:ui="http://java.sun.com/jsf/facelets"> 
    <ui:composition> 
    <ice:selectOneListbox binding="#{binding}" rendered="#{modeExisting}"> 
     <f:selectItems 
     value="#{binding.allTagsSelectItems}" /> 
    </ice:selectOneListbox> 
    <ice:inputText binding="#{binding.name}" /> 
    <ice:inputText binding="#{binding.description}" /> 
    </ui:composition> 
</html> 

。私はブロックの周りに<ice:panelGroup>を置くことができ、それのレンダリングされた属性を使用しますが、再度、その追加のdivを注入する副作用がある可能性があります。この仕事をする方法はありますか?私は私のJSF XHTMLでこれを使用できるようにするに

<?xml version="1.0"?> 
<!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://www.mitre.org/asias/jsf</namespace> 
    <tag> 
    <tag-name>configurationTagEditor</tag-name> 
    <source>../component/configurationTagEditor.xhtml</source> 
    </tag> 
    <tag> 
    <tag-name>configurationTagSelector</tag-name> 
    <source>../component/configurationTagSelector.xhtml</source> 
    </tag> 
    <tag> 
    <tag-name>configurationTagRegexTable</tag-name> 
    <source>../component/configurationTagRegexTable.xhtml</source> 
    </tag> 
</facelet-taglib> 

また、私がこれにfacelet-のtaglibとペア以上のカスタムコンポーネントを使用していますことを言及する価値があるかもしれ

... 
<ice:panelTab label="Existing" styleClass="configurationTagsExisting"> 
    <m:configurationTagEditor tag="#{configuration.existingTag}" /> 
</ice:panelTab> 
... 

答えて

0

他の提案は<h:panelGroup>を使用することであった、しかし、それが応答し<div>要素を挿入

<h:panelGroup>はデフォルトで<div>を表示しません。 layout="block"を追加すると表示されます。他のすべてのHTML属性(idstyleClassなど)の場合は、<span>のみレンダリングされます。 layout属性がなく、他のすべてのHTML属性がない場合は、には何も表示されません。

+0

ありがとう、私は気づいていませんでした。私の参考資料は、JSFではなくIcefacesのものでした。対応するpanelGroup要素のicefacesドキュメントには、「panelGroupコンポーネントは子コンポーネントの周りに「div」要素をレンダリングし、「style」属性の値を「style」属性、および「classClass」属性の値としての「styleClass」属性の値を含む。再度、ありがとうございます。私は、この目的のためにJSF panelGroupを使用します。 – Lucas

+0

これは 'h:panelGroup'ではなく、' ice:panelGroup'の説明です。ここで確認してください:http://download.oracle.com/javaee/6/javaserverfaces/2.0/docs/pdldocs/facelets/index.html – BalusC

関連する問題