2012-06-12 107 views
0

下面的代碼不起作用,但它對jsf1.2來說工作正常。 現在框架JSF2.0和primefaces 3.2css表達式不適用於primefaces

<p:inputText id="pInputText4" disabled="true" value="This is Input 
Text" style="color: 
expression((this.disabled==true)?'#0f0':'#f00');"/> 

我還有一個疑問,爲什麼

<p:selectOneMenu id="roleId" value="#{accessPage.roleId}" required="true"> 
    <f:selectItem itemLabel="#{msg['label.common.selecthere']}" itemValue="#{null}" /> 
    <f:selectItems var="code" value="#{accessPage.roleIdList}" 
     itemLabel="#{code.codeDesc}" itemValue="#{code.codeId}" /> 
    <f:valueChangeListener type="com.ncs.caseconnect.base.app.utils.ValueChangeCleanUtils"/> 
    <p:ajax listener="#{accessPage.roleOrModuleChanged}" update="accessRight" /> 
</p:selectOneMenu> 

的valueChangeListener,當我們選擇第一個null選項AJAX無法正常工作。如果我們刪除必需的屬性,它可以正常工作。它在required和valueChangeListener之間是否衝突?

+0

測試它反對'^ h全局應用此:inputText'JSF2似乎工作。未嘗試Primefaces。 – Shahzeb

回答

1

您可以在組件的任何屬性中使用#{component}來獲取當前組件的具體UIComponent實例。這在<p:inputText>的情況下解決爲UIInput的實例,其具有boolean disabled屬性。所以,這應該這樣做:

<p:inputText id="pInputText4" disabled="true" value="This is Input Text" 
    style="color: #{component.disabled ? '#0f0' : '#f00'};" /> 

但更好的做法是定義一個CSS文件,而不是造型平直的標記,因爲它消除了重複和維護頭痛。

<p:inputText id="pInputText4" disabled="true" value="This is Input Text" 
    styleClass="foo" /> 

.foo { 
    color: #f00; 
} 

.foo[disabled] { 
    color: #0f0; 
} 

或者,如果你想在所有輸入單元

<p:inputText id="pInputText4" disabled="true" value="This is Input Text" /> 

input { 
    color: #f00; 
} 

input[disabled] { 
    color: #0f0; 
} 
+0

Hi BalusC:爲什麼第一個解決方案在css文件中不能正常工作。我想添加顏色:#{component.disabled和component.disabled == true和component.type =='text'? '#0f0':'#f00'}在css文件中,但它不起作用。樣式屬性中的預覽工作正常。你能否給我另一個建議? – Richard

+0

'#{component}'僅在組件本身內部可用**,而不在CSS文件中。它也沒有'type'屬性。您可能會對JavaScript感到困惑。我建議使用後一種方法。你可以用這個選擇器'input [type = text] [disabled] {}'來選擇'input type =「text」disabled =「true」'。 – BalusC

+0

感謝您的幫助!我還有一個關於的問題,你能幫忙查看嗎?它被添加到頂級內容中。 – Richard

0
,最終你將使用 disabled="#{someBean.someCondition}"

在這種情況下,你將不得不使用EL表達式在style太米這樣

<p:inputText id="pInputText4" disabled="#{someBean.someCondition}" value="This is Input 
    Text" style="color:#{someBean.someCondition ?'#0f0':'#f00'}"/> 

說不上對expression但你肯定

我的猜測您可以訪問this, this.disabled真的會爲您提供disabled屬性的值嗎? (嘗試在alert(this.disabled)中顯示)