Ya, but I do not use cayenne.. on the server I use Hibernate ( JBoss ) The client ( Click ) java code, calls a SessionBean that handles all the CRUD.
So I do not have the BaseContext.getThreadObjectContext().commitChanges(); So when I click my save button, a server roundtrip is made and then the method onSaveOptionFormTable is executed, but now the optionFormTable.getRowList() returns an empty list and my changes are lost. On Thu, Aug 15, 2013 at 1:19 AM, Bob Schellink <[email protected]> wrote: > Doesn't this example use FormTable and Cayenne? > http://click.avoka.com/click-examples/table/edit-form-table.htm > > Perhaps you can find some ideas there on how to make FormTables work. > > regards > > Bob > > > On Thu, Aug 15, 2013 at 1:25 AM, Kristian Lind <[email protected]> wrote: > >> How to use the form table without Cayenne. >> >> I am using a form table, the user can then change the values... and click >> save. >> But when trying to save the changes the rowlist in empty... >> >> >> >> private JSIFormTable optionFormTable = new >> JSIFormTable("optionFormTable"); >> public EditProduct() { >> try { >> buildOptionFormTable(); >> } catch (NumberFormatException e) { >> logger.error(e.getMessage(), e); >> setRedirect(com.farheap.jsi.dashboard.pages.errors.Error.class); >> return; >> } >> } >> >> @Override >> public void onInit() { >> ClickUtils.bind(form); >> super.onInit(); >> } >> >> @SuppressWarnings("unchecked") >> private void init(final Long productId) throws SystemException { >> productOptionDataProvider = new PagingDataProvider() { >> @Override >> public int size() { >> Integer size = 0; >> try { >> size = >> Integer.parseInt(dashboardSBBeanLocal.getProductOptionCount(productId).toString()); >> } catch (SystemException e) { >> logger.error(e.getMessage(), e); >> setRedirect(com.farheap.jsi.dashboard.pages.errors.Error.class); >> } >> return size; >> } >> >> @Override >> public List<ProductOptionEnt> getData() { >> List<ProductOptionEnt> productOptions = null; >> int start = optionFormTable.getFirstRow(); >> int count = optionFormTable.getPageSize(); >> String sortColumn = optionFormTable.getSortedColumn(); >> if (StringUtils.isBlank(sortColumn)) { >> sortColumn = "id"; >> } >> boolean ascending = optionFormTable.isSortedAscending(); >> try { >> //Long id = >> Long.parseLong(optionFormTable.getControlLink().getParameter("productId")); >> productOptions = dashboardSBBeanLocal.getProductOptions(productId, >> start, count, sortColumn, ascending); >> } catch (SystemException e) { >> logger.error(e.getMessage(), e); >> setRedirect(com.farheap.jsi.dashboard.pages.errors.Error.class); >> } >> return productOptions; >> } >> }; >> optionFormTable.setDataProvider(productOptionDataProvider); >> >> } >> >> public boolean onSaveOptionFormTable() throws SystemException { >> if (optionFormTable.getForm().isValid()) { >> List<ProductOptionEnt> productOptions = optionFormTable.getRowList(); >> dashboardSBBeanLocal.saveProductOptions(productOptions); >> } >> Long id = Long.parseLong(idField2.getValue()); >> HashMap<String, String> m = new HashMap<String, String>(); >> m.put("productId", "" + id); >> setRedirect(CopyOfEditProduct.class, m); >> return true; >> } >> >> private void buildOptionFormTable() { >> optionFormTable.getForm().setButtonAlign(Form.ALIGN_RIGHT); >> optionFormTable.setClass(Table.CLASS_ITS); >> optionFormTable.setPageSize(Constants.MAX_PAGE_SIZE); >> optionFormTable.setSortable(true); >> optionFormTable.addStyleClass("dash_table80center"); >> optionFormTable.addColumn(new Column("id", "id")); >> optionFormTable.addColumn(new Column("optionType", "Options")); >> >> JSIOptionValueSelect select = new JSIOptionValueSelect(); >> select.setDependentFieldName("optionType"); >> Column column = new FieldColumn("value", "Value", select); >> optionFormTable.addColumn(column); >> >> RegexField basePrice = new RegexField(); >> basePrice.setPattern(PRICE_REGEX); >> basePrice.setTextAlign("right"); >> column = new FieldColumn("basePrice", basePrice); >> //column.setTextAlign("right"); >> optionFormTable.addColumn(column); >> >> RegexField unitPrice = new RegexField(); >> unitPrice.setPattern(PRICE_REGEX); >> unitPrice.setTextAlign("right"); >> column = new FieldColumn("unitPrice", unitPrice); >> optionFormTable.addColumn(column); >> >> optionFormTable.setPaginator(new TableInlinePaginator(optionFormTable)); >> optionFormTable.setPaginatorAttachment(Table.PAGINATOR_INLINE); >> >> optionFormTable.setTableButtonClass("jsi_form_table_buttons"); >> Button button = new Submit("save", "Save", this, >> "onSaveOptionFormTable"); >> button.addStyleClass("btn btn-primary"); >> optionFormTable.getForm().add(button); >> optionFormTable.getForm().add(idField2); >> >> Label label = new Label("label", "Product Options"); >> label.addStyleClass(""); >> addControl(optionFormTable); >> >> } >> >> >> >> >> >> > -- Best regards Kristian Lind
