1

この答えを読んだ後、私はまだ困惑しています。私は、JSTLを回避し、その評価が間違ったフェーズでどのように行われるかを理解する必要があることに同意します。ただし、facelets開発サイトのドキュメント<ui:fragment>によると、タグは2つの属性とをサポートしてidいるようbindingです。したがって、いくつかの実装サポートがあったとしてもrendered、それを利用する運命を誘惑するように思われます。ただし、もう1つの提案は、応答に要素<h:panelGroup>を挿入する<div>ことで、望ましくない副作用(コンテンツをインラインからブロックに変更するなど)を引き起こす可能性があります。誰かがこれを回避する方法を知っていますか?特に、私は次のことを試みています。

<!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を挿入すると副作用が発生する可能性があります。これを機能させる方法はありますか?

また、上記のカスタムコンポーネントをこのfacelet-taglibと組み合わせて使用​​していることにも言及する価値があるかもしれません。

<?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>

jsf xhtmlでこれを使用できるようにするには:

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

1 に答える 1

0

もう1つの提案は、応答に要素<h:panelGroup>を挿入するを使用することでした。<div>

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

于 2010-12-03T17:06:24.103 に答える