Primefaces JSF复合组件禁用属性

Primefaces JSF复合组件禁用属性,primefaces,jsf-2.2,Primefaces,Jsf 2.2,这是我的复合组件的xhtml部分: <cc:interface componentType="partnerSelComp"> <cc:attribute name="value" type="java.lang.Long"/> <cc:attribute name="disabled" type="java.lang.Boolean" default="#{false}"/>

这是我的复合组件的xhtml部分:

    <cc:interface componentType="partnerSelComp">
        <cc:attribute name="value" type="java.lang.Long"/>            
        <cc:attribute name="disabled" type="java.lang.Boolean" default="#{false}"/>            
        <cc:attribute name="service"/>
    </cc:interface>

    <cc:implementation>
        <span id="#{cc.clientId}" style="white-space:nowrap">                                
            <p:inputText id="id" type="hidden" binding="#{cc.partnerId}"/>
            <p:inputText id="code" 
                         binding="#{cc.partnerCode}" 
                         disabled="#{cc.attrs.disabled}" >                     
                <p:ajax event="blur" update="code name msg" listener="#{cc.validate}" />                                                                                                    
            </p:inputText>            
            <p:inputText id ="name" 
                         disabled="true" 
                         binding="#{cc.partnerName}" />                   
            <p:message id="msg" for="code"/>                
        </span>
    </cc:implementation>
如果我能理解原版的问题所在,我会很高兴的。

试试这个

 <cc:attribute name="disabled" type="java.lang.String" default="false"/>  

并替换:

<span id="#{cc.clientId}" style="white-space:nowrap"> 



您能解释一下为什么您认为这是解决方案吗?对于cc:attribute,您不需要使用布尔值使生活复杂化;真|假字符串或布尔值是相同的。对于p:panel,您使用的是p:ajax,因此您需要直接更新jsf组件而不是html?(顺便说一句,否决票不是我投的)。为什么给
span
一个id是个问题?我并不是说你错了,我是在尝试学习并为其他人获取更详细的信息,这样他们也可以学习当你想禁用inputText时,你可以总是写disabled=“false”或disabled=“#{false}”,但第一个很简单。对于jsf,有一个值得尊重的生命周期。h或p标记被转换为HTML,因此如果您想直接更新HTML,您必须从源代码中检索最终ID。好的,第一部分是关于“美丽”(这总是在旁观者的眼中),但是关于第二部分,您确定:
 <cc:attribute name="disabled" type="java.lang.String" default="false"/>  
<span id="#{cc.clientId}" style="white-space:nowrap"> 
<p:panel id="#{cc.clientId}" style="white-space:nowrap">