0

下面的代码不起作用,但它适用于 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 不起作用。如果我们删除所需的属性,它工作正常。required 和 valueChangeListener 之间是否冲突?

4

2 回答 2

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;
}
于 2012-06-12T12:01:22.163 回答
0

我猜你最终会使用disabled="#{someBean.someCondition}"

在这种情况下,您将不得不style像这样在您的 m中使用 EL 表达式

<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)

于 2012-06-12T06:49:03.467 回答