Hello,

I have a form with a gazillion fields on it that all increment with a
numeric. example

timesheet.tsHours01
timesheet.tsHours02
etc

I'd like to dynamically loop this, but have failed to fully get it working.
What I've tried thus far.

<div><t:textfield t:id="empId"  value="timeSheetEntity.empId"/>

<t:Loop source="tsWhours" value="tsWhour" >
     <div class="col-xs-15"><div><t:textfield t:id="tsWhour2"
id="${tsWhour.id}" value="tsWhour.property"/></div></div>
</t:Loop>


    @Property
    private List<TimeSheetEntity> timeSheetEntity;

    @Property
    private List<TsWhour> tsWhours;

    @Property
    private TsWhour tsWhour;

    public void onPrepareFromForm() {
        this.timeSheetEntity =
timeSheetService.getCreateOrUpdate(timeSheetEntity);

        tsWhours = new ArrayList<TsWhour>();
        tsWhours.add(new TsWhour(timeSheetEntity, "TsWhours01"));
        tsWhours.add(new TsWhour(timeSheetEntity, "TsWhours02"));
        tsWhours.add(new TsWhour(timeSheetEntity, "TsWhours03"));
    }

    public class TsWhour {

        private TimeSheetEntity timeSheetEntity;
        private String id;

        private BigDecimal property;

        public TsWhour() {
        }

        public TsWhour(TimeSheetEntity timeSheetEntity, String id) {
            this.timeSheetEntity = timeSheetEntity;
            this.id = id;
        }

        public BigDecimal getProperty() {
            try {
                Method method = TimeSheetEntity.class.getMethod("get" +
id);
                return (BigDecimal) method.invoke(timeSheetEntity);
            } catch (NoSuchMethodException ex) {

Logger.getLogger(TimeSheet.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SecurityException ex) {

Logger.getLogger(TimeSheet.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {

Logger.getLogger(TimeSheet.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalArgumentException ex) {

Logger.getLogger(TimeSheet.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvocationTargetException ex) {

Logger.getLogger(TimeSheet.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }

        public void setProperty(BigDecimal value) {
            System.out.println(value);
        }

        public TimeSheetEntity getTimeSheetEntity() {
            return timeSheetEntity;
        }

        public void setTimeSheetEntity(TimeSheetEntity timeSheetEntity) {
            this.timeSheetEntity = timeSheetEntity;
        }

        public String getId() {
            return id;
        }

        public void setId(String id) {
            this.id = id;
        }

    }


I'm able to get the page to load, but when I save it fails. If possible, I
would rather not specify the datatype as a bigdecimal to keep it completely
dynamic.




-- 
George Christman
www.CarDaddy.com
P.O. Box 735
Johnstown, New York

Reply via email to