Hello All,

I just wanted to thank you all for your help. I thought posting the solution 
back to the list will help other people in  the future.

Oki - I did the following:


I created a map for the clientId's which will hold required validation messages.

    Map styleMap = new HashMap();

An additional 'getRequired" method is executed by all the components which 
should get the style:

<h:inputText id="emailAddress" 
        value="#{ActivationForm.emailAddress}" 
        size="25" 
      required="true"   
        style="#{ActivationForm.required ? 
ActivationForm.styleMap['emailAddress'] : ''}"
></h:inputText> 

The following method finds out if there are any components with messages, adds 
it to the styleMap and returns true if so.
    
    public boolean getRequired(){
        styleMap.clear();
        FacesContext context = FacesContext.getCurrentInstance();
        Iterator itr = context.getClientIdsWithMessages();
        boolean ret_val = false;
        try{
                while (itr.hasNext()) {
                        String clientId = (String) itr.next();                  
 
                        UIComponent uic = 
context.getCurrentInstance().getViewRoot().findComponent(clientId);
                        styleMap.put(uic.getId(),"background: red");
                        ret_val = true;
                }
        }catch(Exception ex){}
        return ret_val;
    }


That also works pretty good for components in a dataTable.

Thanks again  - have a good one,

Nico


Nico Krause| Software Development| TomTom WORK | [EMAIL PROTECTED] | +49 
(0)1749891949 mobile | +49(0)34124495-0 office | +49(0)34124495-25 fax | 
www.tomtomwork.com

-----Ursprüngliche Nachricht-----
Von: news [mailto:[EMAIL PROTECTED] Im Auftrag von Laurie Harper
Gesendet: Donnerstag, 16. März 2006 06:11
An: users@myfaces.apache.org
Betreff: Re: (Validation) required="true" should change my css style of 
inputbox e.g. background:red

Yep, that's the simplest solution. If you don't want to emit the 
style/styleClass value from a backing bean you can also use a variant such as

   <h:inputText ... styleClass="#{mybean.required ? 'required' : ''}"/>

Regarding your concern about doing this in a data table, you shouldn't have any 
problem provided you have the isRequired() method on each row item in your 
table model.

L.

CONNER, BRENDAN (SBCSI) wrote:
> if you can compute the style you want from the information you have in 
> one of your managed beans, I believe you can also do one of the
> following:
> 
> <h:inputText ... style="#{myBean.myStyle}"/>
> 
> or
> 
> <h:inputText ... style="#{myBean.myStyle}"/>
> 
> - Brendan
> 
> -----Original Message-----
> From: Christian Bohn [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, March 15, 2006 8:46 AM
> To: MyFaces Discussion
> Subject: Re: (Validation) required="true" should change my css style 
> of inputbox e.g. background:red
> 
> 
> Hi,
> 
> why don't you simply define two inputfields and render only one like
> this:
> 
> ....
> <t:inputText rendered="#{<<the EL-expression you used in your 
> required-attribute or simply true or false}"  required="true"
> styleClass="red"  ....  />
> <t:inputText rendered="#{! <<the EL-expression you used in your 
> required-attribute or simply true or false}"  required="false"
> styleClass="normal"  ....  />
> ....
> 
> greetings
> 
> Chrstian
> 
> 
> 
> 
> 

Reply via email to