2012-06-12 66 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)中显示)