2016-07-28 18 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

是否使用纯JSF组件(无-PF之一)时,就像一个字中,h工作:panelGrid'? – Kukeltje

+0

@Kukeltje,它也不适用于普通组件。我用h:inputText试了一下。 – jpavel

+0

所以它不是PrimeFaces相关的...你有没有尝试MyFaces而不是Mojarra? – Kukeltje

回答

0

电解金属锰...我用在钻嘴鱼科2.0.3使用属性有相同的异常:SI是不是百分之百的把握,但它似乎像一些保留字的东西或类似:S

作为一种变通方法您可以尝试直接使用id_属性名称而不是id;


好运

相关问题