Hi Jarle,
you need a converter for ServiceReportType.
Regards,
Volker
2009/6/8 Jarle Halvorsen <[email protected]>:
> 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