myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Clemens Sietas" <sie...@gmx.de>
Subject Re: [Tobago] valueChangeListener not called
Date Wed, 17 Jan 2007 08:07:56 GMT
Hello Bernd,

thank you for your hints. I implemented the converter class IntegerConverter
(hopefully I did choose the right Interface (javax.faces.convert.Converter)
My IDE already tells me that converter-id and converter-class are not allowed here.
Thus the converter does not work in Tomcat. 

I pasted the error output from Tomcat further down. A verbatim tag ist suggested. However
that did not help either.

You also mentioned a message tag (<tc:messages />). Can I place it anywhere in the file?

What is wrong with my converter tag?

<tc:selectOneChoice value="#{myBean.userOption}"
                    valueChangeListener="#{maintenance.changeUserSelectedStatus}"
                    id="userGroupChoice">
  <f:selectItems value="#{maintenance.userOptionItems}" id="userChoiceItems"/>
  <converter>
    <converter-id>com.test.converter.IntegerConverter</converter-id>
    <converter-class>com.test.converter.IntegerConverter</converter-class>
  </converter>
  <f:facet name="change">
    <tc:command />
  </f:facet>
</tc:selectOneChoice>

-- the converter class:

package com.test.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.ConverterException;
import javax.faces.convert.Converter;

import org.apache.log4j.Logger;

public class IntegerConverter implements Converter {
  /** Log4j-Protokolierer */
  private Logger log = Logger.getLogger(this.getClass().getName());

  public Object getAsObject(FacesContext context, UIComponent component, String value) throws
ConverterException {
    log.info("getAsObject " + value);
    return new Integer(value);
  }

  public String getAsString(FacesContext context, UIComponent
    component, Object value) throws ConverterException {
    log.info("getAsString " + value);
    return value.toString();
  }
}


Tomcat output:

17.01.2007 08:48:06 BodyContent should be empty. Component with id _idJsp67 clas
s org.apache.myfaces.tobago.component.UIPanel content

        <converter>
          <converter-id>com.test.converter.IntegerConverter</converter-id>
          <converter-class>com.test.converter.IntegerConverter</converter-class>
        </converter>

      Please use the f:verbatim tag for nested content!
      
Regards
Clemens



> Hello Clemens,
> 
> I think you get a Validation Error  : Value is not a valid option.
> Can you add a message tag to your page?
> 
> Please change the type of your Constants to String or add a converter to 
> your selectOneChoice tag on the page
> 
> 
> for example
> 
> 
> <f:converter 
> converterId="org.apache.myfaces.tobago.example.reference.IntegerConverter"
> />
> 
> <converter>
> <converter-id>org.apache.myfaces.tobago.example.reference.IntegerConverter</converter-id>
> <converter-class>org.apache.myfaces.tobago.example.reference.IntegerConverter</converter-class>
> </converter>
> 
> public class IntegerConverter implements Converter {
> 
>    private static final Log LOG = LogFactory.getLog(OnOffConverter.class);
> 
>    public Object getAsObject(FacesContext context, UIComponent 
> component, String value) throws ConverterException {
>      LOG.info("getAsObject " + value);
>      return new Integer(value);
>    }
> 
>    public String getAsString(FacesContext context, UIComponent 
> component, Object value) throws ConverterException {
>      LOG.info("getAsString " + value);
>      return value.toString();
>    }
> }
> 
> Regards
> 
> Bernd
> 
> Clemens Sietas wrote:
> > Hello,
> > 
> > I have read a long thread on the valueChangeListener from November 2006
> > in this mailing-list.
> > I adapted my code to the help in the tread, however, the 
> > valueChangeListener still is not called.
> > 
> > I just subscribed to ask for further help. Here is my code:
> > 
> > <tc:loadBundle basename="overview" var="overviewBundle"/>
> > <layout:overview>
> > <jsp:body>
> > <f:view>
> > <tc:form>
> > <tc:panel>
> > ...
> > ...
> >     <tc:panel>
> >       <tc:selectOneChoice value="#{myBean.userOption}"
> >                          
> valueChangeListener="#{myBean.changeUserSelectedStatus}"
> >                           id="userChoice">
> >         <f:selectItems value="#{myBean.userOptionItems}"
> id="userChoiceItems"/>
> >         <f:facet name="change">
> >           <tc:command />
> >         </f:facet>
> >       </tc:selectOneChoice>
> >     </tc:panel>
> > ...
> > ...
> > 
> > </tc:panel>
> > </tc:form>
> > </f:view>
> > </jsp:body>
> > </layout:overview>
> > 
> > ----
> > 
> > public class ProcessChangeController {
> >   /** Log4j-Protokolierer */
> >   private Logger log = Logger.getLogger(this.getClass().getName());
> > 
> >   private int userOption;
> > 
> >   private static SelectItem[] userOptionItems = new SelectItem[]{
> >     new SelectItem(new Integer(SEARCH_OPT_USER), "for User"),
> >     new SelectItem(new Integer(SEARCH_OPT_ADMI), "for Admin")};
> > 
> >   public int getUserOption() {
> >     return userOption;
> >   }
> > 
> >   public void setUserOption(int userOption) {
> >     this.userOption = userOption;
> >   }
> > 
> > 
> >   public void changeUserSelectedStatus(ValueChangeEvent event) {
> >     log.info("PrChgCtrl_cls::changeUserSelectedStatus(ValueChangeEvent)
> pressed");
> > 
> >     userOption = (Integer) userOptionItems[1].getValue();
> > 
> >     FacesContext context = FacesContext.getCurrentInstance();
> >     context.getViewRoot().setLocale(Locale.US);
> >     ...
> >     ...
> >   }
> >   
> > ---
> > 
> >   <managed-bean>
> >     <managed-bean-name>myBean</managed-bean-name>
> >    
> <managed-bean-class>com.test.ProcessChangeController</managed-bean-class>
> >     <managed-bean-scope>session</managed-bean-scope>
> >   </managed-bean>
> > 
> > ---
> > 
> > Thanks for any help
> > 
> > Clemens
> > 

-- 
--------------------------------------------
Clemens Sietas
email: siecle@gmx.de
--------------------------------------------



Mime
View raw message