Hi Jarle,

you need a converter for ServiceReportType.


Regards,
    Volker

2009/6/8 Jarle Halvorsen <j...@multiplus.as>:
> Hi.
>
>
>
> Im on tobago 1.0.20
>
>
>
> I'm think I've missed something here. I just can't find out what is wrong
> with my code. I'm trying to bind the selected item of a selectOneChoice to a
> property on a controller.
>
> The selectOneChoice is initially rendered correctly with data from my
> database. But when I try to select from the list, I get a validation error,
> and the setSelectedServiceReportType to set the value back to the controller
> is never called. If I set the test up with an int og even a Long as values
> for the selectItems it all works fine..
>
>
>
> What am I doing wrong??
>
>
>
> I have this test code:
>
>
>
> jsp:
>
>             <tc:box label="Register New Report">
>
>                   <tc:panel>
>
>                              <f:facet name="layout">
>
>                               <tc:gridLayout columns="*;*;" rows="fixed;"
> border="0" />
>
>                               </f:facet>
>
>                               <tx:selectOneChoice label="Select One"
> value="#{testController.selectedServiceReportType}">
>
>                                   <f:selectItems
> value="#{testController.serviceReportTypes}"/>
>
>                              <f:facet name="change">
>
>                                    <tc:command
> action="#{testController.selectedServiceReportTypeAction}"/>
>
>                              </f:facet>
>
>                               </tx:selectOneChoice>
>
>
>
>                         <tx:label value="TEsting"/>
>
>                   </tc:panel>
>
>             </tc:box>
>
>
>
>
>
> controller:
>
>
>
> public class TestController {
>
>
>
>   private ArrayList<ServiceReportType> serviceReportTypes;
>
>   private ServiceReportType selectedServiceReportType;
>
>
>
>   public void setSelectedServiceReportType(ServiceReportType
> selectedServiceReportType) {
>
>     this.selectedServiceReportType = selectedServiceReportType;
>
>   }
>
>
>
>   public ServiceReportType getSelectedServiceReportType() {
>
>       return selectedServiceReportType;
>
>   }
>
>
>
>   public ArrayList<SelectItem> getServiceReportTypes() {
>
>     if (serviceReportTypes == null) {
>
>       serviceReportTypes = new ArrayList<ServiceReportType>();
>
>       for (int i = 0; i < 3; i++) {
>
>         ServiceReportType serviceReportType = new ServiceReportType();
>
>         serviceReportType.setDescription("Decription " + i);
>
>         serviceReportTypes.add(serviceReportType);
>
>       }
>
>     }
>
>
>
>     ArrayList<SelectItem> selectItems = new ArrayList<SelectItem>();
>
>     for (ServiceReportType serviceReportType : serviceReportTypes) {
>
>       selectItems.add(new SelectItem(serviceReportType,
> serviceReportType.getDescription()));
>
>     }
>
>     return selectItems;
>
>   }
>
>
>
>   public String selectedServiceReportTypeAction() {
>
>     return "OK";
>
>   }
>
>
>
> }
>
>
>
> ServiceReportType entity (which is Hibernate mapped):
>
>
>
> public class ServiceReportType implements Serializable {
>
>
>
>   private static final long serialVersionUID = 2869236275653791385L;
>
>
>
>   private Long id;
>
>   private String typeCode;
>
>   private String description;
>
>
>
>   public Long getId() {
>
>     return id;
>
>   }
>
>
>
>   public void setId(Long id) {
>
>     this.id = id;
>
>   }
>
>
>
>   public String getTypeCode() {
>
>     return typeCode;
>
>   }
>
>
>
>   public void setTypeCode(String typeCode) {
>
>     this.typeCode = typeCode;
>
>   }
>
>
>
>   public String getDescription() {
>
>     return description;
>
>   }
>
>
>
>   public void setDescription(String description) {
>
>     this.description = description;
>
>   }
>
>
>
> }
>
>



-- 
inexso - information exchange solutions GmbH
Bismarckstraße 13      | 26122 Oldenburg
Tel.: +49 441 4082 356 |
FAX:  +49 441 4082 355 | www.inexso.de

Reply via email to