2013-01-31 104 views
0

我使用基於Primefaces擴展中的InputNumber的複合組件。我已將必需屬性設置爲true,並且不顯示消息。另外我沒有*標記表示該字段是必需的。 下面是代碼:pe所需的消息:inputNumber

<p:outputLabel for="maxvrednost" value="#{resources['skale.maxvrednost']}" /> 
     <asw:inputDecimal id="maxvrednost" bean="#{attrsBean}" column="maxvrednost" required="true" disabled="#{tip == 'brisanje'}" value="#{dto.maxvrednost}"/> 
     <p:message for="maxvrednost" display="icon" /> 

代碼爲複合材料部件是:

<cc:interface> 
    <cc:attribute name="bean" required="true" type="asw.iis.common.ui.beans.CommonListBackingBean" /> 
    <cc:attribute name="column" required="true" type="java.lang.String" /> 
    <cc:attribute name="value" required="true" type="java.lang.Object" />  
    <cc:attribute name="disabled" default="false" required="false" type="java.lang.Boolean" /> 
    <cc:attribute name="title" required="false" type="java.lang.String" default=""/> 
</cc:interface> 
<cc:implementation> 
    <pe:inputNumber emptyValue="" style="text-align: right;" value="#{cc.attrs.value}" required="#{cc.attrs.required}"   
     decimalSeparator="#{applicationPropertiesBean.decimalSeparator}" disabled="#{cc.attrs.disabled}" 
     decimalPlaces="#{cc.attrs.bean.findNumberOfDecimalPlaces(cc.attrs.column)}" title="#{cc.attrs.title}" 
     thousandSeparator="#{applicationPropertiesBean.groupSeparator}"> 
    </pe:inputNumber> 
</cc:implementation> 
+0

請發佈複合組件的源代碼 – rootkit

+0

我剛剛用代碼更新了我的問題,但我不認爲該代碼可以幫助解決此問題。我認爲這可能是的一個問題 –

回答

0

不是100%正確的解決方案,但它爲我工作:

<composite:interface > 
    <composite:attribute name="value" required="false" type="java.lang.String" default=""></composite:attribute> 
    <composite:attribute name="update" required="false" type="java.lang.String" default=""></composite:attribute> 
    <composite:attribute name="process" required="false" type="java.lang.String" default=""></composite:attribute> 
    <composite:attribute name="requiredMessage" required="false" type="java.lang.String" default=""></composite:attribute> 
    <composite:attribute name="decimalPlaces" required="false" type="java.lang.Integer" default="0"></composite:attribute> 
    <composite:editableValueHolder name="value" targets="num"></composite:editableValueHolder> 
    <composite: 

</composite:interface> 
<composite:implementation> 
<div id="#{cc.clientId}"> 
<pe:inputNumber id="num" roundMethod="S" decimalPlaces="#{cc.attrs.decimalPlaces}" symbol="#{applicationBean.currentCurrencySymbol}" 
    minValue="0" required="true" requiredMessage="#{cc.attrs.requiredMessage}" 
    value="#{cc.attrs.value}"></pe:inputNumber> 
</div> 
</composite:implementation> 

使用方法如下:

    <p:outputLabel value="Enter Amount" for="amt:num"></p:outputLabel> 
     <p:message for="amt:num"></p:message> 
     <comp:InputCurrency id="amt" roundMethod="S" decimalPlaces="0" symbol="#{applicationBean.currentCurrencySymbol}" 
      minValue="1" requiredMessage="#{loc._('Please enter amount to withdraw!')}" 
      value="#{myBean.amount}"></comp:InputCurrency> 

否te'required'屬性被硬編碼爲'true'。如果我將複合組件屬性'required'定義並將該值複製到inputNumber'required'屬性,則它將按照需要運行,但不會在標籤上顯示'*'標記。發生這種情況是因爲inputNumber的'required'屬性在渲染時尚未設置,返回爲'false' - 不知道爲什麼,沒有時間深入研究。

相關問題