1
No stack trace is given. The error message is from a h:messages component.

2
Seam 2.0.0CR2
JSF 1.2

3
I'm not entirely sure what I need to do regards Stateful / Stateless for this 
bean.

Another slightly smaller issue is that it does not select the "no Selection" 
item as default. I would like this to be the case. Any ideas on that?


I have created a somewhat working version by using the following.

The xhtml file:

  | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
  | <html xmlns="http://www.w3.org/1999/xhtml";
  |       xmlns:ui="http://java.sun.com/jsf/facelets";
  |       xmlns:h="http://java.sun.com/jsf/html";
  |       xmlns:f="http://java.sun.com/jsf/core";
  |       xmlns:rich="http://richfaces.org/rich";
  |       xmlns:a4j="https://ajax4jsf.dev.java.net/ajax";
  |       xmlns:s="http://jboss.com/products/seam/taglib";
  |       xmlns:j4j="http://javascript4jsf.dev.java.net/";
  |       xmlns:gekko="http://gekkoTagLibs.com";>
  |       
  |     <head></head>
  |     <body>
  |             <h:form id="searchCriteria" >
  |                     <rich:panel>
  |                             <f:facet name="header">
  |                                             <h:outputText value="Factor for 
Category/Subcategory Enquiry (TLONL999)"></h:outputText>
  |                             </f:facet>
  |                             
  |                             <rich:panel>
  |                                     <h:messages globalOnly="true"/>         
                
  |                             </rich:panel>
  |                             
  |                             <h:panelGrid columns="3">
  |                                     <h:outputText value="Category:" 
styleClass="inputLabel"></h:outputText>
  |                                     <h:selectOneMenu id="categoryFilter" 
value="#{catSubcatEnquiryActionBean.categoryCode}" 
converter="gekkoGenericObjectConverter">
  |                                             <s:selectItems 
value="#{categories}" var="category" noSelectionLabel="none" 
  |                                                                             
label="#{category.name}"/>
  |                                     </h:selectOneMenu>
  |                                     <h:message 
for="categoryFilter"></h:message>
  |                                     <h:outputText value="Subcategory:" 
styleClass="inputLabel"></h:outputText>
  |                                     <h:selectOneListbox 
id="subcategoryFilter">
  |                                     </h:selectOneListbox>
  |                                     <h:message 
for="subcategoryFilter"></h:message>
  |                                     <h:outputText value="Date:" 
styleClass="inputLabel"></h:outputText>
  |                                     <rich:calendar id="calendarFilter"
  |                                                     showInput="true"
  |                                                     
enableManualInput="true" 
  |                                                     
datePattern="#{catSubcatEnquiryActionBean.dateFormat}"
  |                                                     
currentDate="#{catSubcatEnquiryActionBean.currentDate}"
  |                                                     
value="#{catSubcatEnquiryActionBean.dateFilter}"
  |                                                     
converter="gekkoDateConverter"
  |                                                     >
  |                                     </rich:calendar>
  |                                     <h:message id="calendarErrors" 
for="calendarFilter"></h:message>
  |                             </h:panelGrid>
  |                                             
  |                     </rich:panel>
  | 
  |                     <h:commandButton id="formSubmit" type="submit" 
value="Search" action="#{catSubcatEnquiryActionBean.doSearch}">
  |                             <gekko:defaultAction/>
  |                     </h:commandButton>
  |                     
  |             </h:form>
  |     
  |     </body>
  | </html>
  | 


The converter

  | package gekko.web.converter;
  | 
  | import gekko.domain.PersistentEntity;
  | import gekko.domain.reference.ltl.CategoryCode;
  | 
  | import javax.faces.component.UIComponent;
  | import javax.faces.context.FacesContext;
  | import javax.faces.convert.Converter;
  | import javax.faces.convert.ConverterException;
  | 
  | import com.sun.faces.util.MessageFactory;
  | 
  | import org.jboss.seam.jsf.ListDataModel;
  | 
  | public class GenericObjectConverter implements Converter {
  |     
  |     /**
  |      * <p>The standard converter id for this converter.</p>
  |      */
  |     public static final String CONVERTER_ID = 
"gekko.web.converter.GenericObjectConverter";
  |     
  |     /**
  |      * <p>The message identifier of the [EMAIL PROTECTED] 
javax.faces.application.FacesMessage} to be created if
  |      * the conversion to <code>Date</code> fails.  The message format
  |      * string for this message may optionally include the following
  |      * placeholders:
  |      * <ul>
  |      * <li><code>{0}</code> replaced by a <code>String</code> whose value
  |      * is the label of the input component that produced this message.</li>
  |      * </ul></p>
  |      */
  |     public static final String NO_CLASS_SPECIFIED =
  |          "gekko.web.converter.GenericObjectConverter.NOCLASS";
  |     
  |     /**
  |      * <p>The message identifier of the [EMAIL PROTECTED] 
javax.faces.application.FacesMessage} to be created if
  |      * the conversion of the <code>DateTime</code> value to
  |      * <code>String</code> fails.   The message format string for this 
message
  |      * may optionally include the following placeholders:
  |      * <ul>
  |      * <li><code>{0}</code> replaced by a <code>String</code> whose value
  |      * is the label of the input component that produced this message.</li>
  |      * </ul></p>
  |      */
  |     public static final String INVALID_CLASS = 
  |          "gekko.web.converter.GenericObjectConverter.INVALIDCLASS";
  | 
  |     @Override
  |     public Object getAsObject(FacesContext context, UIComponent component,
  |                     String value) {
  |             
  |             try {
  |                     
  |                     for(UIComponent comp : component.getChildren()) {
  |                     
  |                             ListDataModel objectList = 
(ListDataModel)comp.getValueExpression("value").getValue(context.getELContext());
  |                             objectList.setRowIndex(0);
  |                             while (objectList.isRowAvailable()) {
  |                                     CategoryCode currentCategory = 
(CategoryCode)objectList.getRowData();
  |                                     if 
(currentCategory.getId().toString().equals(value)) {
  |                                             return currentCategory;
  |                                     }
  |                                     
objectList.setRowIndex(objectList.getRowIndex() + 1);
  |                             }
  |                     }
  |             } catch (ConverterException e) { // NOPMD
  |             throw e;
  |         } catch (Exception e) {
  |             throw new ConverterException(e);
  |         }
  |         
  |         return null;
  |     }
  | 
  |     @Override
  |     public String getAsString(FacesContext context, UIComponent component,
  |                     Object value) {
  | 
  |             String id;
  |     
  |             try {
  | 
  |             if (value == null) {
  |                 return "";
  |             }
  |            
  |             id = ((PersistentEntity)value).getId().toString(); 
  |             return id;
  |             
  |             } catch (ConverterException e) {
  |             throw new ConverterException(MessageFactory.getMessage(
  |                  context, INVALID_CLASS,
  |                  MessageFactory.getLabel(context, component)), e);
  |         } catch (Exception e) {
  |             throw new ConverterException(MessageFactory.getMessage(
  |                  context, INVALID_CLASS, 
  |                  MessageFactory.getLabel(context, component)), e);
  |         }
  |     }
  | 
  | }
  | 



This actually works and updates my bean etc etc... so I will use this if there 
are no better solutions. I will look into this Stateful idea and see what 
affect that has. 

But I would REALLY like it if I could make the noSelectionLabel the default 
selection in the selectOneMenu


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4098640#4098640

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4098640
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to