I do not know why JSF UI elements have a Disabled property. I mean I would prefer it if they instead offered an Enabled one. ADF bindings on the other hand have enabled properties, so UI tags usually look this :
<af:commandButton actionListener="#{bindings.Create.execute}" text="#{res['commands.create']}" disabled="#{!bindings.Create.enabled}" action="addEdit"/>
How imagine having to wire in the UserInfo
bean, I was talking about the other day. Ideally you would like to have the above Create button enabled when your user is an administrator i.e. #{UserInfo.admin == true}
and when the Create binding is enabled, meaning #{bindings.Create.enabled == true}
.
Since we now have a Disabled property, this means that the value assigned should be the opposite of #{UserInfo.admin == true && bindings.Create.enabled == true}
. The EL expression for this is #{!(UserInfo.admin == true && bindings.Create.enabled == true)}
. Using De Morgan's low we end up with #{!UserInfo.admin || !bindings.Create.enabled}
.
I understand that for most people this is more than trivial, but I have to admit that is took me a good while to figure it out. (Does age come at a price or what?) I want to learn by my own mistakes. Therefore I thought I 'd put it down in witting, so I won't run into this again.
2 comments :
Ha! I hear you. The new 11g accordion like controls have a property "disclosed" which of course when you take away the double negative means "open". So much easier to understand.
CM.
Don't disable it if not the binding isn't enabled ;)
Agree with you wholeheartedly.
Post a Comment