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