下面的代码不起作用,但它适用于jsf1.2。 现在框架是jsf2.0和primefaces 3.2
<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>
当我们选择第一个null选项时,valueChangeListener和ajax不起作用。如果我们删除所需的属性,它工作正常。是否与requiredChangeListener之间存在冲突?
答案 0 :(得分:1)
您可以在任何组件的属性中使用#{component}
来获取当前组件的具体UIComponent
实例。如果<p:inputText>
的{{1}}实例具有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;
}
答案 1 :(得分:0)
我猜你最终会使用disabled="#{someBean.someCondition}"
在这种情况下,您必须在style
中使用EL表达式,就像这样
<p:inputText id="pInputText4" disabled="#{someBean.someCondition}" value="This is Input
Text" style="color:#{someBean.someCondition ?'#0f0':'#f00'}"/>
关于expression
的Dunno,但您确定可以访问this
并且this.disabled
确实为您提供了disabled
属性的值吗? (尝试在alert(this.disabled)
)