2016-07-28 17 views
0

私はFaceletタグ(入力とラベル付け)を作成しようとしています。私はidを条件付きの属性にしようとするところまでうまくいった。これを達成する方法はありますか?私は(PrimeFaces)を使用していると私がやろうとしているもののようなものです:オプションのid属性を持つFaceletタグ

<h:inputText> 
    <c:if test="#{id ne null}"> 
     <f:attribute name="id" value="#{id}" /> 
    </c:if> 
</h:inputText> 

そして、私はそれを使用する方法をこの:

<my:outputPanel /> 

または

<my:outputPanel id="foo" /> 

私はそれを使用しようとすると、私はこのエラーを受け取ります:

java.lang.IllegalArgumentException 
at javax.faces.component.UIComponent.setValueExpression(UIComponent.java:484) 
at com.sun.faces.facelets.tag.jsf.core.AttributeHandler.apply(AttributeHandler.java:119) 
at com.sun.faces.facelets.tag.jstl.core.IfHandler.apply(IfHandler.java:96) 
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) 

これはid以外の属性でうまく動作します。これはid属性に関する一種の制限のようです。どのような方向でもありがとうございます。

+0

それは動作しますか? – Kukeltje

+0

@Kukeltje、それは普通のコンポーネントでも動作しません。私はh:inputTextで試しました。 – jpavel

+0

それはPrimeFaces関連ではない...あなたはMojarraの代わりにMyFacesを試しましたか? – Kukeltje

答えて

0

EMM ...私はクロサギ科2.0.3の属性を使用して、同じ例外を持っていた:SIは百パーセントを確認していないが、いくつか予約語がまたは類似を詰め込むように思える:S

回避策としてidの代わりにid_属性名を直接使用することもできます。 panelGrid`: `時間のような普通のJSFコンポーネント(なし-PF 1)を使用した場合


幸運

関連する問題