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

Reply via email to