Editable Table Model
Forgive me if this question has been asked before, but I was wondering if anyone else is experiencing problems with Matisse and Table Models?
After years of building GUIs by hand, I have begun to experiment with Matisse. One of the simple forms I am building contains a couple of JTables; the data for each provided by an instance of a subclass of AbstractTableModel that I already use successfully in an existing application. Running the form sees the model(s) supplying the data correctly but I cannot edit anything. The isCellEditable() method has been overloaded to return true all of the time but it is simply never being called when the user interacts with the form.
Does anyone know if there is an easy - obvious - solution to this that will leave me feeling silly but help no end? Thanks in advance.
Hello Zadok and thanks for the reply.
Yes, it would be easier but I have tried doing that and still experience the same problem. It seems as though the edits are not being posted through the the table model. Does anyone know if I have to explicitly implement editors for each cell? Is there a setting in the list of properties that I should be using - by the way, I have layed around with these options a bit to no effect.
Similar Messages
-
Tabular data model: Query keeps timing out when attempting to Edit Table Properties
Tabular data model (SSDT)
Problem: I have a table in tabular data model using a SQL Query for a data source. The query in question requires about 3 minutes to regenerate. When I open Edit Table Properties for this data source the query times out and I get an error (see below): "
Failed to retrieve data from udvTrainJobReportsData. Reason: Query timeout expired"
This seems to happen anytime I use a query that takes longer than a couple of minutes to regenerate. Anyone have an idea on how to get around this. Is there a timeout setting somewhere in tabular data model that can be increased?
Thanks...Hi ManikantM,
According to your description, you query keeps time out when edit table properties. Right?
In this scenario, this error is thrown when connection or query execution exceeds the time out value. Please try to import this table and then increase the connection time out seconds.
We can increase to ExternalCommandTimeout in Analysis Server Properties. Please refer to link below:
http://aniruddhathengadi.blogspot.in/2012/07/ole-db-error-ole-db-or-odbc-error-query.html
Please also refer to a similar thread below:
https://social.technet.microsoft.com/Forums/office/en-US/3f83a26b-71c6-462e-8b90-2ce2ce0b9465/powerpivots-2010-query-keeps-timing-out-when-attempting-to-edit-table-properties?forum=excel
Best Regards,
Simon Hou
TechNet Community Support -
Use ComboBox TableCellEditor - values are not saved to the table model
Hi,
I got a combobox cell editor that uses to edit one of the columns.
And i got an ok button that uses to collect the data from the table and save it to the db.
In case i started editing of a cell and the editor is still displayed- if i will click on the button the data that will be colected from the table model will not contained the updated value in the cell editor.
In this case the user think his changes were saved but the last updated field is not updated.
Is this a bug i got in the cell editor or this is the normal behaviour?
Can it be fixed? (So that if the cell is in the middle of editing the value that will be saved is the last value that was selected).
public class PriorityCellEditor extends StandardComboBox implements TableCellEditor {
private boolean isEditMode=false;
* A list of eventlisteners to call when an event is fired
private EventListenerList listenerList = new EventListenerList();
* the table model
public StbAreaClusterPriorityCellEditor(boolean isEditMode) {
super(StbAreaMapper.clustersPriorities);
setEditMode(isEditMode);
setEditable(false);
this.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
setAlignmentX(Component.LEFT_ALIGNMENT);
public boolean isEditMode() {
return isEditMode;
public void setEditMode(boolean editMode) {
isEditMode = editMode;
setEnabled(editMode);
public Component getTableCellEditorComponent(JTable table, Object value,boolean isSelecte, int row, int column) {
int selectedIndex;
if (isSelecte) {
setForeground(table.getSelectionForeground());
setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
if(value instanceof String){
selectedIndex=StbAreaMapper.mapGuiPriorityDescToGuiCode((String)value);
setSelectedIndex(selectedIndex);
return this;
public void cancelCellEditing() {
fireEditingCanceled();
public Object getCellEditorValue() {
return getSelectedItem();
public boolean isCellEditable(EventObject anEvent) {
return isEditMode;
public boolean shouldSelectCell(EventObject anEvent) {
return false;
public boolean stopCellEditing() {
fireEditingStopped();
return true;
* Adds a new cellEditorListener to this cellEditor
public void addCellEditorListener(CellEditorListener l) {
listenerList.add(CellEditorListener.class, l);
* Removes a cellEditorListener from this cellEditor
public void removeCellEditorListener(CellEditorListener l) {
listenerList.remove(CellEditorListener.class, l);
* Notify all listeners that have registered interest for notification on
* this event type.
* @see javax.swing.event.EventListenerList
protected void fireEditingStopped() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == CellEditorListener.class) {
((CellEditorListener) listeners[i + 1]).editingStopped(
new ChangeEvent(this));
* Notify all listeners that have registered interest for notification on
* this event type.
* @see javax.swing.event.EventListenerList
protected void fireEditingCanceled() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == CellEditorListener.class) {
((CellEditorListener) listeners[i + 1]).editingCanceled(new ChangeEvent(this));
}Try this
yourTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE); -
I created a table model and use JTable to display content of a database's table with that model.
The problem is: when I update a data to data1 in a cell (first column) and hightlight another cell (second column), all cells of first column change content to data1. What 's the problem with my table model?
import java.util.Vector;
import java.sql.*;
import javax.swing.table.AbstractTableModel;
public class CommonTableModel extends AbstractTableModel {
String[] columnNames;
Vector rows, newRow;
ResultSetMetaData metaData;
private boolean editable;
public CommonTableModel(ResultSet rs, boolean editable) {
this.editable = editable;
try {
metaData = rs.getMetaData();
int numberOfColumns = metaData.getColumnCount();
columnNames = new String[numberOfColumns];
for(int column = 0; column < numberOfColumns; column++) {
columnNames[column] = metaData.getColumnName(column+1);
rows = new Vector();
newRow = new Vector();
while (rs.next()) {
for (int i = 1; i <= getColumnCount(); i++) {
newRow.addElement(rs.getObject(i));
rows.addElement(newRow);
} catch (SQLException ex) { System.err.println(ex);}
public int getColumnCount() { return columnNames.length; }
public int getRowCount() { return rows.size();}
public String getColumnName(int column) { return columnNames[column];}
public Object getValueAt(int row, int column) {
newRow = (Vector)rows.elementAt(row);
return newRow.elementAt(column);
public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
public boolean isCellEditable(int row, int column) {
if (column == 0) { return false; }
return editable;
public void setValueAt(Object value, int row, int column) {
newRow = (Vector)(rows.elementAt(row));
newRow.setElementAt(value, column);
fireTableCellUpdated(row, column);
}Try this :
rows = new Vector();
//newRow = new Vector();
while (rs.next()) {
newRow = new Vector(); // it must be here
for (int i = 1; i <= getColumnCount(); i++) {
newRow.addElement(rs.getObject(i));
rows.addElement(newRow);
}Denis -
ADF Faces Dependent list boxes in an editable table
Hi,
I'm working with JDeveloper 10.1.3.1.0.
I saw the topic "How to build dependent list boxes with ADF II" on F. Nimphius' Blogbuster.
There it is shown how to handle dependent list boxes in an ADF Faces form. I tried this for an editable table but it doesn't work correctly: If there is more than one row in the resultset of the table, both dependent list boxes have the same content in all the rows though the content in the database is different.
Can anyone help me?
Thanks.Ok - I will try.
I built the listboxes like it is described in "ADF Faces: How to built dependent lists boxes with ADF and ADF Faces Part II", Frank Nimphius' Blogbuster July, 2006.
This is the full code of my ManagedBean:
package asdb.view.backing;
import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;
import oracle.adf.model.OperationBinding;
import oracle.adf.model.binding.DCIteratorBinding;
import oracle.adf.view.faces.component.core.input.CoreInputText;
import oracle.binding.BindingContainer;
import oracle.jbo.Row;
import oracle.jbo.ViewObject;
import oracle.jbo.client.Configuration;
import oracle.jbo.uicli.binding.JUCtrlValueBindingRef;
public class AktMitFktEdit {
private BindingContainer bindings;
public AktMitFktEdit() {
public void kategorieWechsel(ValueChangeEvent valueChangeEvent) {
// Add event code here...
BindingContainer bc = this.getBindings();
DCIteratorBinding kategorienIter = (DCIteratorBinding)
bc.get("OrganKategIterator1");
Row rw =
kategorienIter.getRowAtRangeIndex(((Integer)valueChangeEvent.getNewValue()).intValue());
String kategorie = (String)rw.getAttribute("Kategorie");
OperationBinding opBindingOrganeLovIter = (OperationBinding)bc.get("ExecuteWithParams");
opBindingOrganeLovIter.getParamsMap().put("kategorieParam",kategorie);
opBindingOrganeLovIter.execute();
public void setBindings(BindingContainer bindings)
this.bindings = bindings;
public BindingContainer getBindings() {
return bindings;
It works fine, when the user only want to update existing rows. But if he had inserted a new row and afterwards want to update existing rows, the listboxes don't show the correct contents. No error messages are displayed. -
JTable with custom column model and table model not showing table header
Hello,
I am creating a JTable with a custom table model and a custom column model. However the table header is not being displayed (yes, it is in a JScrollPane). I've shrunk the problem down into a single compileable example:
Thanks for your help.
import javax.swing.*;
import javax.swing.table.*;
public class Test1 extends JFrame
public static void main(String args[])
JTable table;
TableColumnModel colModel=createTestColumnModel();
TestTableModel tableModel=new TestTableModel();
Test1 frame=new Test1();
table=new JTable(tableModel, colModel);
frame.getContentPane().add(new JScrollPane(table));
frame.setSize(200,200);
frame.setVisible(true);
private static DefaultTableColumnModel createTestColumnModel()
DefaultTableColumnModel columnModel=new DefaultTableColumnModel();
columnModel.addColumn(new TableColumn(0));
return columnModel;
static class TestTableModel extends AbstractTableModel
public int getColumnCount()
return 1;
public Class<?> getColumnClass(int columnIndex)
return String.class;
public String getColumnName(int column)
return "col";
public int getRowCount()
return 1;
public Object getValueAt(int row, int col)
return "test";
public void setValueAt(Object aValue, int rowIndex, int columnIndex)
}Edited by: 802416 on 14-Oct-2010 04:29
addedKleopatra wrote:
jduprez wrote:
See http://download.oracle.com/javase/6/docs/api/javax/swing/table/TableColumn.html#setHeaderValue(java.lang.Object)
When the TableColumn is created, the default headerValue is null
So, the header ends up rendered as an empty label (probably of size 0 if the JTable computes its header size based on the renderer's preferred size).nitpicking (can't resist - the alternative is a cleanup round in some not so nice code I produced recently <g>):
- it's not the JTable's business to compute its headers size (and it doesn't, the header's the culprit.) *> - the header should never come up with a zero (or near-to) height: even if there is no title shown, it's still needed as grab to resize/move the columns. So I would consider this sizing behaviour a bug.*
- furthermore, the "really zero" height is a longstanding issue with MetalBorder.TableHeaderBorder (other LAFs size with the top/bottom of their default header cell border) which extends AbstractBorder incorrectly. That's easy to do because AbstractBorder itself is badly implemented
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6459419
Thanks for the opportunity to have some fun :-)
JeanetteNo problem, thanks for the insight :) -
JButton in JTable with custom table model
Hi!
I want to include a JButton into a field of a JTable. I do not know why Java does not provide a standard renderer for JButton like it does for JCheckBox, JComboBox and JTextField. I found some previous postings on how to implement custom CellRenderer and CellEditor in order to be able to integrate a button into the table. In my case I am also using a custom table model and I was not able to create a clickable button with any of the resources that I have found. The most comprehensive resource that I have found is this one: http://www.java2s.com/Code/Java/Swing-Components/ButtonTableExample.htm.
It works fine (rendering and clicking) when I start it. However, as soon as I incorporate it into my code, the clicking does not work anymore (but the buttons are displayed). If I then use a DefaultTableModel instead of my custom one, rendering and clicking works again. Does anyone know how to deal with this issue? Or does anyone have a good pointer to a resource for including buttons into tables? Or does anyone have a pointer to a resource that explains how CellRenderer and CellEditor work and which methods have to be overwritten in order to trigger certain actions (like a button click)?
thanksYes, you were right, the TableModel was causing the trouble, everything else worked fine. Somehow I had this code (probably copy and pasted from a tutorial - damn copy and pasting) in my TableModel:
public boolean isCellEditable(int row, int col) {
//Note that the data/cell address is constant,
//no matter where the cell appears onscreen.
if (col < 3) {
return false;
} else {
return true;
}A pretty stupid thing when you want to edit the 3rd column... -
Hi,
I have created a Master-Detail-Detail page using UIX. I want to make the last detail table editable. I have tried the tip mentioned in the following page to make the table editable.
http://www.oracle.com/technology/products/jdev/tips/jacobi/edittable/tip_adfuixtable_edit.html
But, the condition in switcher ${uix.current.EmployeeId.inputValue == bindings.EmployeeId.inputValue is always returning false. This is because, the ${bindings.xxxxx} is returning null for all columns.
Could anyone help me in resolve this issue Please?
Here is the uix file I am using:
<?xml version="1.0" encoding="windows-1252"?>
<page xmlns="http://xmlns.oracle.com/uix/controller"
xmlns:ui="http://xmlns.oracle.com/uix/ui"
xmlns:ctrl="http://xmlns.oracle.com/uix/controller"
xmlns:html="http://www.w3.org/TR/REC-html40"
expressionLanguage="el">
<content>
<dataScope xmlns="http://xmlns.oracle.com/uix/ui">
<provider>
<!-- Add DataProviders (<data> elements) here -->
</provider>
<contents>
<document>
<metaContainer>
<!-- Set the page title -->
<head title=""/>
</metaContainer>
<contents>
<body>
<contents>
<form name="form0">
<contents>
<pageLayout>
<about/>
<copyright/>
<corporateBranding/>
<end/>
<globalButtons/>
<pageButtons/>
<pageHeader/>
<privacy/>
<productBranding/>
<start/>
<tabs/>
<contents>
<stackLayout>
<contents>
<header text="Master">
<contents>
<table model="${bindings.SyPohdrAckView1}" id="SyPohdrAckView17" partialRenderMode="multiple" partialTargets="_uixState">
<contents>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'OfdaFileId')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.OfdaFileId}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'AcknowledgmentNumber')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgmentNumber}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'PoNumber')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.PoNumber}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'PlannedDeliveryDate')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.PlannedDeliveryDate}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'PoOrdTotal')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.PoOrdTotal}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'AcknowledgeStatus')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeStatus}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'AcknowledgeInfo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeInfo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'AcknowledgeDate')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.AcknowledgeDate}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPohdrAckView1,'AcknowledgeByCtIdNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeByCtIdNo}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
</contents>
<tableSelection>
<singleSelection model="${bindings.SyPohdrAckView1Iterator}" text="Select and ">
<primaryClientAction>
<firePartialAction targets="detail6 detail12 _uixState" source="SyPohdrAckView17" event="select"/>
</primaryClientAction>
</singleSelection>
</tableSelection>
</table>
</contents>
</header>
<header text="Detail" id="detail6">
<contents>
<table model="${bindings.SyPolineAckView2}" id="SyPolineAckView28" partialRenderMode="multiple" partialTargets="_uixState">
<contents>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'OfdaFileId')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.OfdaFileId}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'AcknowledgmentNumber')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgmentNumber}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'PoNumber')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.PoNumber}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'LineItemNumber')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.LineItemNumber}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'SpecItemNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.SpecItemNo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'Quantity')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.Quantity}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'Cost')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.Cost}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'PlannedDeliveryDate')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.PlannedDeliveryDate}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'AcknowledgeStatus')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeStatus}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'AcknowledgeInfo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeInfo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'AcknowledgeDate')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.AcknowledgeDate}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'AcknowledgeByCtIdNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.AcknowledgeByCtIdNo}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.SyPolineAckView2,'RowID')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.RowID}" columns="10" readOnly="true"/>
</contents>
</column>
</contents>
<tableSelection>
<singleSelection model="${bindings.SyPolineAckView2Iterator}" text="Select and ">
<primaryClientAction>
<firePartialAction targets="detail12 _uixState" source="SyPolineAckView28" event="select"/>
</primaryClientAction>
</singleSelection>
</tableSelection>
</table>
</contents>
</header>
</contents>
</stackLayout>
<stackLayout>
<contents>
<header text="Detail" id="detail12">
<contents>
<table nameTransformed="false" model="${bindings.PoLineView2}" id="PoLineView214" partialRenderMode="multiple" partialTargets="_uixState" formSubmitted="true">
<contents>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'PoNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.PoNo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'LineNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.LineNo}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'ItemNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.ItemNo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'ItemStyle')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.ItemStyle}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'VendorNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.VendorNo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'VendorItemNo')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.VendorItemNo}" columns="10" readOnly="true"/>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'QtyOrd')}"/>
</columnHeader>
<contents>
<switcher childName="${uix.current.PoNo.inputValue == bindings.PoNo.inputValue ? 'selected' : 'notselected'}">
<case name="selected">
<textInput model="${bindings.QtyOrd}" columns="10" readOnly="false">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</case>
<case name="notselected">
<textInput model="${uix.current.QtyOrd}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</case>
</switcher>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'UnitPrice')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.UnitPrice}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnFormat columnDataFormat="numberFormat"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'LineAmt')}"/>
</columnHeader>
<contents>
<textInput model="${uix.current.LineAmt}" columns="10" readOnly="true">
<onSubmitValidater>
<decimal/>
</onSubmitValidater>
</textInput>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'DateCreated')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.DateCreated}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<columnFormat cellNoWrapFormat="true"/>
<columnHeader>
<sortableHeader model="${ctrl:createSortableHeaderModel(bindings.PoLineView2,'DueDate')}"/>
</columnHeader>
<contents>
<dateField model="${uix.current.DueDate}" readOnly="true">
<onSubmitValidater>
<date pattern="yyyy-MM-dd"/>
</onSubmitValidater>
</dateField>
</contents>
</column>
<column>
<contents>
<submitButton text="Commit" model="${bindings.Commit}" id="Commit15" event="action" disabled="false"/>
</contents>
</column>
</contents>
<tableSelection>
<singleSelection model="${bindings.PoLineView2Iterator}" text="Select and ">
<primaryClientAction>
<firePartialAction targets="_uixState PoLineView214" source="PoLineView214" event="select" formSubmitted="true"/>
</primaryClientAction>
</singleSelection>
</tableSelection>
</table>
</contents>
</header>
</contents>
</stackLayout>
</contents>
</pageLayout>
<formValue name="${bindings.statetokenid}" value="${bindings.statetoken}" id="_uixState"/>
</contents>
</form>
</contents>
</body>
</contents>
</document>
</contents>
</dataScope>
</content>
<handlers>
<!-- Add EventHandlers (<event> elements) here -->
<event name="goto sort" source="SyPohdrAckView17">
<invoke method="handleTableUiEvent" javaType="oracle.cabo.adf.rt.AdfUtils">
<parameters>
<parameter javaType="oracle.adf.model.binding.DCIteratorBinding" value="${bindings.SyPohdrAckView1Iterator}"/>
<parameter javaType="oracle.cabo.servlet.expl.ControllerImplicitObject" value="${uix}"/>
</parameters>
</invoke>
</event>
<event name="select" source="SyPohdrAckView17">
<set target="${bindings.SyPohdrAckView1Iterator}" property="currentRowIndexInRange" value="${ui:tableSelectedIndex(uix, 'SyPohdrAckView17')}"/>
</event>
<event name="goto sort" source="SyPolineAckView28">
<invoke method="handleTableUiEvent" javaType="oracle.cabo.adf.rt.AdfUtils">
<parameters>
<parameter javaType="oracle.adf.model.binding.DCIteratorBinding" value="${bindings.SyPolineAckView2Iterator}"/>
<parameter javaType="oracle.cabo.servlet.expl.ControllerImplicitObject" value="${uix}"/>
</parameters>
</invoke>
</event>
<event name="select" source="SyPolineAckView28">
<set target="${bindings.SyPolineAckView2Iterator}" property="currentRowIndexInRange" value="${ui:tableSelectedIndex(uix, 'SyPolineAckView28')}"/>
</event>
<event name="goto sort" source="SyPolineAckView213">
<invoke method="handleTableUiEvent" javaType="oracle.cabo.adf.rt.AdfUtils">
<parameters>
<parameter javaType="oracle.adf.model.binding.DCIteratorBinding" value="${bindings.SyPolineAckView2Iterator}"/>
<parameter javaType="oracle.cabo.servlet.expl.ControllerImplicitObject" value="${uix}"/>
</parameters>
</invoke>
</event>
<event name="select" source="SyPolineAckView213">
<set target="${bindings.SyPolineAckView2Iterator}" property="currentRowIndexInRange" value="${ui:tableSelectedIndex(uix, 'SyPolineAckView213')}"/>
</event>
<event name="goto sort" source="PoLineView214">
<invoke method="handleTableUiEvent" javaType="oracle.cabo.adf.rt.AdfUtils">
<parameters>
<parameter javaType="oracle.adf.model.binding.DCIteratorBinding" value="${bindings.PoLineView2Iterator}"/>
<parameter javaType="oracle.cabo.servlet.expl.ControllerImplicitObject" value="${uix}"/>
</parameters>
</invoke>
</event>
<event name="select" source="PoLineView214">
<set target="${bindings.PoLineView2Iterator}" property="currentRowIndexInRange" value="${ui:tableSelectedIndex(uix, 'PoLineView214')}"/>
</event>
<event name="action" source="Commit15">
<invoke method="doIt" javaType="oracle.jbo.uicli.binding.JUCtrlActionBinding" instance="${bindings.Commit}"/>
</event>
</handlers>
</page>hi all,
it looks this where clause not filter with 'N' data ,Please help me ,how to solve this or help me on this -
i have edited the setValueAt method of the TableModel interface to enable editing of cells in my JTable - in-situ. This works fine. However, i would like it so that when any change is made to the table data, it is automatically sorted depending on how it was sorted before the change was made. i have:
public void setValueAt(Object aValue, int row, int col) {
if (col == 0) {
bookList[row].setBookNumber(Integer.parseInt((String)aValue)); // Populates cell with new book number
if (lastSort == "number") {
listByNumber();
} else {
if (col == 1) {
bookList[row].setTitle((String)aValue); // Populates cell with new book title
} else {
if (col == 2) {
bookList[row].setAuthorPrename((String)aValue); // Populates cell with new author prename
} else {
bookList[row].setAuthorSurname((String)aValue); // Populates cell with new author surname
}i would put more if statements in later for different sort methods but at the moment ill just stick with one. My problem is that the array is being sorted correctly, but the table doesn't update automatically to show the change. what DOES happen - is when you click on each row of the table, it changes until it is in the correct order. this leads me to think that the sorting works fine, but somehow my table model isnt reflecting the changes? can any help me update the table in real time?no luck :( i tried:
public void setValueAt(Object aValue, int row, int col) {
if (col == 0) {
bookList[row].setBookNumber(Integer.parseInt((String)aValue)); // Populates cell with new book number
listByNumber();
fireTableDataChanged();and extended AstractTableModel but it still didnt work. is there anything else i would need to do? -
Help! Hit an wierd exception when edit a column in editable table
I created a view object with 3 entities objects (3 tables) in model project and drag view object into jsf page to create as an edit table in view controller project.
when I run this jsf page and update the value for a column of one row in the page, hit below exeception?
I try to find the reason but failed. appreciate if anybody can help. thanks.
The date string "2013-10-06 01:00:00.0" is for YardFixedSlotRecomm.START_DT and I didn't change this value. it seems that it is using "2013-10-06 01:00:00.0" to set YardFixedSlot.FIXED_SLOT_ID value and no idea about why ADF is doing this and I tested view object and it can work, but when it is used in web app, problem occurred.
Root cause error code is JBO-25009. Error message parameters are {0=java.lang.Integer, 1=2013-10-06 01:00:00.0, 2=java.sql.Timestamp}
SQL queries in View objects and row key should contains: YardFixedSlot.FIXED_SLOT_ID,YardBlock.BLOCK_M AS BLOCK_M1, FxedSlotRecomm.FIXED_SLOT_ID AS FIXED_SLOT_ID1,YardFixedSlotRecomm.START_DT.
SELECT YardFixedSlot.BLOCK_M,
YardFixedSlot.BLOCK_N,
YardFixedSlot.FIXED_SLOT_ID,
YardFixedSlot.SECTION_N,
YardFixedSlot.STATUS_C,
YardFixedSlot.TERMINAL_C,
YardBlock.BLOCK_M AS BLOCK_M1,
YardBlock.BLOCK_N AS BLOCK_N1,
YardBlock.DISPLAY_COLUMN_N,
YardBlock.DISPLAY_ROW_N,
YardBlock.DISPLAY_SLOT_OFFSET_N,
YardBlock.LINEAR_REGION_N,
YardBlock.LINEAR_SEQ_N,
YardBlock.MAX_STACK_WEIGHT_Q,
YardBlock.PATH_DATA_X,
YardBlock.ROW_FROM_N,
YardBlock.ROW_NUMBER_DIRECTION_C,
YardBlock.ROW_TO_N,
YardBlock.SECTION_N AS SECTION_N1,
YardBlock.SLOT_FROM_N,
YardBlock.SLOT_NUMBER_DIRECTION_C,
YardBlock.SLOT_NUMBER_TYPE_C,
YardBlock.SLOT_TO_N,
YardBlock.STATUS_C AS STATUS_C1,
YardBlock.TERMINAL_C AS TERMINAL_C1,
YardFixedSlotRecomm.CREATE_DT,
YardFixedSlotRecomm.END_DT,
YardFixedSlotRecomm.FIXED_SLOT_ID AS FIXED_SLOT_ID1,
YardFixedSlotRecomm.RECOMMENDATION_C,
YardFixedSlotRecomm.START_DT
FROM CITOSADMIN.YARD_FIXED_SLOT YardFixedSlot, CITOSADMIN.YARD_BLOCK YardBlock, CITOSADMIN.YARD_FIXED_SLOT_RECOMM YardFixedSlotRecomm
(YardFixedSlot.BLOCK_M = YardBlock.BLOCK_M(+)) AND (YardFixedSlot.FIXED_SLOT_ID = YardFixedSlotRecomm.FIXED_SLOT_ID(+))
Exception detail:
[2013-12-04T10:30:21.873+08:00] [DefaultServer] [ERROR] [] [oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter] [tid: [ACTIVE].ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'] [userId: <anonymous>] [ecid: 676653a7-bc31-46c9-ba9c-6a394c0b9ff1-000002d0,0] [APP: YPCApp] [DSID: 0000KAvRxpz5qYWFLzmJOA1IbbbH00000A] ADF_FACES-60096:Server Exception during PPR, #3[[
oracle.jbo.domain.DataCreationException: JBO-29114 ADFContext is not setup to process messages for this exception. Use the exception stack trace and error code to investigate the root cause of this exception. Root cause error code is JBO-25009. Error message parameters are {0=java.lang.Integer, 1=2013-10-06 01:00:00.0, 2=java.sql.Timestamp}
at oracle.jbo.domain.TypeFactory.get(TypeFactory.java:933)
at oracle.jbo.domain.TypeFactory.getInstance(TypeFactory.java:112)
at oracle.jbo.server.AttributeDefImpl.convertToJava(AttributeDefImpl.java:2515)
at oracle.jbo.server.ViewRowSetImpl.prepKeyForFind(ViewRowSetImpl.java:5666)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5683)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5585)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5579)
at oracle.jbo.server.ViewObjectImpl.findByKey(ViewObjectImpl.java:12554)
at oracle.jbo.uicli.binding.JUCtrlHierBinding.bringNodeToRangeKeyPath(JUCtrlHierBinding.java:846)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding.bringNodeToRangeKeyPath(FacesCtrlHierBinding.java:122)
at oracle.adfinternal.view.faces.model.binding.RowDataManager.setRowKey(RowDataManager.java:131)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding$FacesModel.setRowKey(FacesCtrlHierBinding.java:951)
at org.apache.myfaces.trinidad.component.UIXCollection.setRowKey(UIXCollection.java:527)
at org.apache.myfaces.trinidad.component.UIXTable.setRowKey(UIXTable.java:760)
at oracle.adfinternal.view.faces.renderkit.rich.TableRendererUtils.isRowAvailable(TableRendererUtils.java:1825)
at oracle.adfinternal.view.faces.renderkit.rich.TableRendererUtils.processAutoPPRUpdate(TableRendererUtils.java:412)
at oracle.adfinternal.view.faces.renderkit.rich.TableRenderer.renderModelChanges(TableRenderer.java:1075)
at oracle.adfinternal.view.faces.renderkit.rich.TableRenderer.encodeAll(TableRenderer.java:627)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at org.apache.myfaces.trinidad.component.UIXCollection.encodeEnd(UIXCollection.java:650)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer.encodeCellComponent(PanelGridLayoutRenderer.java:1205)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellChildrenEncoderCallback.processComponent(CellChildrenEncoderCallback.java:38)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellChildrenEncoderCallback.processComponent(CellChildrenEncoderCallback.java:20)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:245)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellEncoderCallback.processComponent(CellEncoderCallback.java:271)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellEncoderCallback.processComponent(CellEncoderCallback.java:24)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:245)
at oracle.adfinternal.view.faces.renderkit.rich.grid.RowEncoderCallback.processComponent(RowEncoderCallback.java:74)
at oracle.adfinternal.view.faces.renderkit.rich.grid.RowEncoderCallback.processComponent(RowEncoderCallback.java:22)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.encodeFlattenedChildren(UIXComponent.java:291)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer._encodeAllOrVisitChildrenForEncodingImpl(PanelGridLayoutRenderer.java:1036)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer.encodeAll(PanelGridLayoutRenderer.java:314)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
at oracle.adfinternal.view.faces.renderkit.rich.FormRenderer.encodeAll(FormRenderer.java:275)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
at oracle.adfinternal.view.faces.renderkit.rich.DocumentRenderer.encodeAll(DocumentRenderer.java:1473)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at oracle.adfinternal.view.faces.context.PartialViewContextImpl._processRender(PartialViewContextImpl.java:304)
at oracle.adfinternal.view.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:159)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at oracle.adfinternal.view.faces.component.AdfViewRoot.encodeAll(AdfViewRoot.java:102)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:391)
at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
at org.apache.myfaces.trinidadinternal.application.ViewDeclarationLanguageFactoryImpl$ChangeApplyingVDLWrapper.renderView(ViewDeclarationLanguageFactoryImpl.java:338)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:170)
at oracle.adfinternal.view.faces.lifecycle.ResponseRenderManager.runRenderView(ResponseRenderManager.java:52)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:1104)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:389)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:255)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:192)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:303)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:208)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:225)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)
Caused by: java.lang.NumberFormatException: For input string: "2013-10-06 01:00:00.0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.<init>(Integer.java:677)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at oracle.jbo.domain.TypeConvMapEntry.convert(TypeConvMapEntry.java:101)
at oracle.jbo.domain.TypeFactory.get(TypeFactory.java:883)
... 118 more
## Detail 0 ##
java.lang.NumberFormatException: For input string: "2013-10-06 01:00:00.0"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
at java.lang.Integer.<init>(Integer.java:677)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
at oracle.jbo.domain.TypeConvMapEntry.convert(TypeConvMapEntry.java:101)
at oracle.jbo.domain.TypeFactory.get(TypeFactory.java:883)
at oracle.jbo.domain.TypeFactory.getInstance(TypeFactory.java:112)
at oracle.jbo.server.AttributeDefImpl.convertToJava(AttributeDefImpl.java:2515)
at oracle.jbo.server.ViewRowSetImpl.prepKeyForFind(ViewRowSetImpl.java:5666)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5683)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5585)
at oracle.jbo.server.ViewRowSetImpl.findByKey(ViewRowSetImpl.java:5579)
at oracle.jbo.server.ViewObjectImpl.findByKey(ViewObjectImpl.java:12554)
at oracle.jbo.uicli.binding.JUCtrlHierBinding.bringNodeToRangeKeyPath(JUCtrlHierBinding.java:846)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding.bringNodeToRangeKeyPath(FacesCtrlHierBinding.java:122)
at oracle.adfinternal.view.faces.model.binding.RowDataManager.setRowKey(RowDataManager.java:131)
at oracle.adfinternal.view.faces.model.binding.FacesCtrlHierBinding$FacesModel.setRowKey(FacesCtrlHierBinding.java:951)
at org.apache.myfaces.trinidad.component.UIXCollection.setRowKey(UIXCollection.java:527)
at org.apache.myfaces.trinidad.component.UIXTable.setRowKey(UIXTable.java:760)
at oracle.adfinternal.view.faces.renderkit.rich.TableRendererUtils.isRowAvailable(TableRendererUtils.java:1825)
at oracle.adfinternal.view.faces.renderkit.rich.TableRendererUtils.processAutoPPRUpdate(TableRendererUtils.java:412)
at oracle.adfinternal.view.faces.renderkit.rich.TableRenderer.renderModelChanges(TableRenderer.java:1075)
at oracle.adfinternal.view.faces.renderkit.rich.TableRenderer.encodeAll(TableRenderer.java:627)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at org.apache.myfaces.trinidad.component.UIXCollection.encodeEnd(UIXCollection.java:650)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer.encodeCellComponent(PanelGridLayoutRenderer.java:1205)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellChildrenEncoderCallback.processComponent(CellChildrenEncoderCallback.java:38)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellChildrenEncoderCallback.processComponent(CellChildrenEncoderCallback.java:20)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:245)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellEncoderCallback.processComponent(CellEncoderCallback.java:271)
at oracle.adfinternal.view.faces.renderkit.rich.grid.CellEncoderCallback.processComponent(CellEncoderCallback.java:24)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:245)
at oracle.adfinternal.view.faces.renderkit.rich.grid.RowEncoderCallback.processComponent(RowEncoderCallback.java:74)
at oracle.adfinternal.view.faces.renderkit.rich.grid.RowEncoderCallback.processComponent(RowEncoderCallback.java:22)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:195)
at org.apache.myfaces.trinidad.component.UIXComponent.processFlattenedChildren(UIXComponent.java:326)
at org.apache.myfaces.trinidad.component.UIXComponent.encodeFlattenedChildren(UIXComponent.java:291)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer._encodeAllOrVisitChildrenForEncodingImpl(PanelGridLayoutRenderer.java:1036)
at oracle.adfinternal.view.faces.renderkit.rich.PanelGridLayoutRenderer.encodeAll(PanelGridLayoutRenderer.java:314)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
at oracle.adfinternal.view.faces.renderkit.rich.FormRenderer.encodeAll(FormRenderer.java:275)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeChild(CoreRenderer.java:624)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeAllChildren(CoreRenderer.java:641)
at oracle.adf.view.rich.render.RichRenderer.encodeAllChildrenInContext(RichRenderer.java:3195)
at oracle.adfinternal.view.faces.renderkit.rich.DocumentRenderer.encodeAll(DocumentRenderer.java:1473)
at oracle.adf.view.rich.render.RichRenderer.encodeAll(RichRenderer.java:1578)
at org.apache.myfaces.trinidad.render.CoreRenderer.encodeEnd(CoreRenderer.java:511)
at org.apache.myfaces.trinidad.component.UIXComponentBase.encodeEnd(UIXComponentBase.java:1085)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at oracle.adfinternal.view.faces.context.PartialViewContextImpl._processRender(PartialViewContextImpl.java:304)
at oracle.adfinternal.view.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:159)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:981)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at oracle.adfinternal.view.faces.component.AdfViewRoot.encodeAll(AdfViewRoot.java:102)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:391)
at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
at org.apache.myfaces.trinidad.view.ViewDeclarationLanguageWrapper.renderView(ViewDeclarationLanguageWrapper.java:101)
at org.apache.myfaces.trinidadinternal.application.ViewDeclarationLanguageFactoryImpl$ChangeApplyingVDLWrapper.renderView(ViewDeclarationLanguageFactoryImpl.java:338)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:288)
at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:170)
at oracle.adfinternal.view.faces.lifecycle.ResponseRenderManager.runRenderView(ResponseRenderManager.java:52)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._renderResponse(LifecycleImpl.java:1104)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl._executePhase(LifecycleImpl.java:389)
at oracle.adfinternal.view.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:255)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:280)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:254)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:136)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:341)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:25)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:192)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.adfinternal.view.faces.webapp.rich.RegistrationFilter.doFilter(RegistrationFilter.java:106)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at oracle.adfinternal.view.faces.activedata.AdsFilter.doFilter(AdsFilter.java:60)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl$FilterListChain.doFilter(TrinidadFilterImpl.java:478)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterImpl(TrinidadFilterImpl.java:303)
at org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter(TrinidadFilterImpl.java:208)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter(TrinidadFilter.java:92)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.security.jps.ee.http.JpsAbsFilter$1.run(JpsAbsFilter.java:137)
at java.security.AccessController.doPrivileged(Native Method)
at oracle.security.jps.util.JpsSubject.doAsPrivileged(JpsSubject.java:315)
at oracle.security.jps.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:460)
at oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:120)
at oracle.security.jps.ee.http.JpsAbsFilter.doFilter(JpsAbsFilter.java:217)
at oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:81)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at oracle.dms.servlet.DMSServletFilter.doFilter(DMSServletFilter.java:225)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.RequestEventsFilter.doFilter(RequestEventsFilter.java:27)
at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:79)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3367)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3333)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2220)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2146)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2124)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1564)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)I am using JDeveloper 12c.
I want to know why ADF selected input string: "2013-10-06 01:00:00.0" for parsing? maybe it took wrong value. I just made one column: YardFixedSlot.STATUS_C ediable. input string: "2013-10-06 01:00:00.0" is a value for row key column: YardFixedSlotRecomm.START_DT.
The row key compose of 4 columns with respective types: [Interger,String ,Interger, Timestamp]
YardFixedSlot.FIXED_SLOT_ID
YardBlock.BLOCK_M AS BLOCK_M1
FxedSlotRecomm.FIXED_SLOT_ID AS FIXED_SLOT_ID1
YardFixedSlotRecomm.START_DT
But error message show 3 parameters:
Root cause error code is JBO-25009. Error message parameters are {0=java.lang.Integer, 1=2013-10-06 01:00:00.0, 2=java.sql.Timestamp} -
Unable to uncheck checkbox in UIX editable table
It seams that in editable table is unable to uncheck checked checkbox. After submit checkbox is stays checked. To check it works fine. To uncheck it in imput form also works fine. Problem is only in editable table. version jdev10.1.2. Thank you. Jara
this is the UIX code
<switcher childName="${uix.current.Iid.inputValue == bindings.Iid.inputValue ? 'edit' : 'noEdit'}">
<case name="edit">
<checkBox model="${bindings.IsDefault}" readOnly="false"/>
</case>
<case name="noEdit">
<checkBox model="${uix.current.IsDefault}" readOnly="true"/>
</case>
</switcher> -
Help!! UIX Editable Table and RowID
I Have UIX with Editable Table:
<switcher childName="${uix.current.PatrRowID.inputValue == bindings.PatrRowID.inputValue ? 'selected' : 'notselected'}">
<case name="selected">
<textInput model="${bindings.PatrCode}" columns="10" readOnly="false"/>
</case>
<case name="notselected">
<textInput model="${uix.current.PatrCode}" columns="10" readOnly="true"/>
</case>
</switcher>
whenn i update colum , i have error
ORA-00904: "PATR_ROW_ID"
i have EO with RowID column..The new "Create" has also another issues - I am not able to use getCurrentRow in ViewObject. Workaround is to use old 40 behaviour but I think that such big change should be much more documented and because developer sometimes needs to use the 40 behaviour it should be shown in the DataControl. Any comments?
-
Hi All,
hopefully somebody has already encountered and solved this problem.
We are using jHeadstart 10.1.2.2 build 32 and have generated our application in JSPs. But i'm running into a quite structural problem when using the editable table.
I execute the following steps:
- On a few pages we have editable tables that display one empty (new) row at the bottom.
- The tables (views) have a few mandatory columns (attributes).
- I do not fill all the required field in the empty row
- I press the commit button
The page shows the relevant message (the field is mandatory) in the screen but also dumps a NoSuchElementException in the last line.
The last line shown is the 'new' row.
java.util.NoSuchElementException
at java.util.AbstractList$Itr.next(Unknown Source)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport$SimpleForEachIterator.next(ForEachSupport.java:143)
at org.apache.taglibs.standard.tag.common.core.ForEachSupport.next(ForEachSupport.java:165)
at javax.servlet.jsp.jstl.core.LoopTagSupport.doAfterBody(LoopTagSupport.java:301)
at _web_2d_inf._page._referentie._TalenTable._jspService(_TalenTable.java:367)
[SRC:/WEB-INF/page/referentie/TalenTable.jsp:161]
at com.orionserver[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].http.OrionHttpJspPage.service(OrionHttpJspPage.java:56)
at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:349)
at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:509)
at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:413)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:782)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher.java:226)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:274)
at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:455)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:320)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at oracle.jheadstart.controller.strutsadf.JhsRequestProcessor.process(JhsRequestProcessor.java:385)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at oracle.jheadstart.controller.strutsadf.JhsActionServlet.process(JhsActionServlet.java:130)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ResourceFilterChain.doFilter(ResourceFilterChain.java:65)
at oracle.jheadstart.controller.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:176)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.EvermindFilterChain.doFilter(EvermindFilterChain.java:16)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:239)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher.java:617)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher.java:330)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.HttpRequestHandler.processRequest(HttpRequestHandler.java:794)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:270)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].server.http.HttpRequestHandler.run(HttpRequestHandler.java:112)
at com.evermind[Oracle Application Server Containers for J2EE 10g (9.0.4.2.0)].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor.java:192)
at java.lang.Thread.run(Unknown Source)I've tracked the problem down to the RangeSetWrapper class that returns a size of 6 but fills the errorBeans property with only 5 objects. When getting the 6th row (index 5) the errorBeans array throws an IndexOutOfRangeException which in turn results in the NoSuchElement exception.
Does anybody recognize this problem? Does anybody have a solution? I'm trying to hack into the RangeSetWrapper class, but am not very succesfull at the moment (Well the Exception is gone, but rows get mixed up ;-))
Regards,
Robert Willems of Brilman
Ps. An extract from the JSP page:
<c:set var="RbsTalenViewNewRows" value="1" scope="request"/>
<c:forEach var="RbsTalenView" varStatus="status" items="${jhsTableBindings.RbsTalenView.rangeSet}">
<html:hidden name="RbsTalenView" property="rowKeyStr" indexed="true"/>
<c:set var="editMode" scope="request" value="${status.index lt bindings.TalenIterator.estimatedRowCount and bindings.TalenIterator.currentRowIndexInRange!=-1}"/>
<tr class="altRow<c:out value="${status.index % 2 + 1 }"/>">
<c:set var="rowKeyStr" scope="request" value="${RbsTalenView.rowKeyStr}"/>
<td nowrap="nowrap">
<font class="required">*</font>
<c:if test='${RbsTalenView.TalenUnicode == null}' >
<html:text name="RbsTalenView" property="TalenUnicode" size="10" maxlength="3" indexed="true"/>
</c:if>
<c:if test='${RbsTalenView.TalenUnicode != null}' >
<html:text name="RbsTalenView" property="TalenUnicode" size="10" maxlength="3" indexed="true" disabled="true"/>
</c:if>
</td>
<td nowrap="nowrap">
<html:text name="RbsTalenView" property="TalenNaam" size="30" maxlength="64" indexed="true"/>
</td>
<td class="fixed">
<jsp:include page="/common/customDeleteButton.jsp" flush="true">
<jsp:param name="deleteEvent" value="setCurrentRowWithKey~RbsTalenView"/>
</jsp:include>
</td>
</tr>
</c:forEach> The exception is raised during the </c:forEach> (afterBody)Problem solved....
It seems we had overridden some framework method in a subclass of JhsDataAction called clearFormBeanValues(). If you don't call this method you will get the exception stack i encountered. (The comments said the forms were always cleared and it shouldn't do that when errors were encountered.... too bad, not a name ;-))
Hopefully nothing else will break now i ripped out that code ;-)
Regards,
Robert -
Custom Table Model from Default Table Model
I'm creating a customised table model to create a table with column header and empty rows.But it is throwing Component paint_imediatly error.If i pass in empty string to the row vector then setNumRows then no problem. If i do like this later it throws me error in my addNewRow method which was working fine before.Can anyone help?I would realy apreaciate it.Thank you.
KavithaThis must be your lucky day :)
Here is my version of an EditableTableModel which displays an emptyline as the last line
import java.io.*;
import java.util.*;
import javax.swing.table.*;
import javax.swing.event.*;
* Custom TableModel, allows addition and removal of records/rows and editting of existing values.
* it also keeps track over which rows have been altered.
* column 0 is a boolean indicating wheter or not to keep this row/record
* @author Maurice Marrink
* @version 1.0
public class EditableTableModel extends AbstractTableModel implements Serializable, TableModelListener
protected ArrayList keep,changed; //houden bij of een rij gedel moet worden en of ie is veranderd (false = delete)
protected ArrayList[] DATA;
protected int emptyLineIndex;
protected String[] kolomNamen;
protected Object[] kolomTypen; // bevat een object van dezelfde class als die kolom
protected int newRowsIndex; // houd bij vanaf welke rij niewe regels zijn toegevoegd ivm het opslaan in de db
protected int[]primecolumns; //houd bij welke kolommen ingevuld moeten worden voordat de volgende regel getoond wordt (default= kolom 1)
public EditableTableModel()
keep = new ArrayList(); //visible
changed=new ArrayList(); // not visisble
primecolumns=new int[0];
DATA=new ArrayList[0];
kolomNamen =new String[0];
kolomTypen=new Object[0];
emptyLineIndex=-1;
newRowsIndex=-1;
* the constructor, creates a new EditableTableModel
*@param data an array of ArrayLists each arrayList contains the values of an entire column
*@param names an array containg the names of the columns
*@param type an array containing Objects which correspond to the objects in the columns
public EditableTableModel(ArrayList[] data, String[] names, Object[] type)
keep = new ArrayList(); //visible
changed=new ArrayList(); // not visisble
primecolumns=new int[1];
primecolumns[0]=1;
DATA=data;
for(int i=0;i<getRowCount();i++)
keep.add(new Boolean(true));
changed.add(new Boolean(false));
kolomNamen=names;
kolomTypen=type;
emptyLineIndex=getRowCount()-1;
addNewLine();
newRowsIndex=emptyLineIndex; // nieuwe regels beginnen op de lege regel
addTableModelListener(this);
* @return the number of rows/records
public int getRowCount()
return DATA[0].size();
*@return the number of columns
public int getColumnCount()
return DATA.length+1;
* returns the object containing the value for this cell
* indexes start at 0 (wheter or not to keep this row), but the actual data starts at 1
*@param row the row in which the cell resides
*@param column the column in which the cell resides
*@return the value of the cell wrapped in the appropiate Object
public Object getValueAt(int row, int column)
if(column==0)
return keep.get(row);
else
return DATA[column-1].get(row);
* allows editing of an existing value
*@param value the new value, should be of the same Object Type as the existing one
*@param row the row nr of the cell
*@param col the column nr of the cell
public void setValueAt(Object value, int row, int col)
if(col==0)
keep.set(row,value);
else
DATA[col-1].set(row,value);
changed.set(row, new Boolean(true));
fireTableCellUpdated(row, col);
* adds a new "empty" row after all the PrimeColums of the last row have been filled with an acceptable value
*@see setPrimeColumns
protected void addNewLine()
try
for(int i=0;i<DATA.length;i++)
if(kolomTypen[i] instanceof Integer)
DATA.add(new Integer(-1));
else
if(kolomTypen[i] instanceof Boolean)
DATA[i].add(new Boolean(false));
else
if(kolomTypen[i] instanceof Long)
DATA[i].add(new Long(-1)); //displayed as "" by cellrenderer
else
DATA[i].add(kolomTypen[i].getClass().newInstance()); //nieuw object aanmaken van het type dat gespecificeerd is, Integers en Booleans moet een waarde meegegeven worden
keep.add(new Boolean(true));
changed.add(new Boolean(false));
emptyLineIndex++;
catch(Exception e)
e.printStackTrace();
public void tableChanged(TableModelEvent e)
if(e.getFirstRow()==emptyLineIndex)//alleen als de emptyLine ge?dit wordt een regel toevoegen
boolean primesfilled=true;
for(int i=0;i<primecolumns.length;i++)
if(getValueAt(emptyLineIndex,primecolumns[i]).equals(null) || getValueAt(emptyLineIndex,primecolumns[i]).toString().equals("")|| getValueAt(emptyLineIndex,primecolumns[i]).toString().equals("-1"))
primesfilled=false;
break;
if(primesfilled) //alleen als de primaire sleutel kolommen ingevuld zijn
addNewLine();
* returns the Class type of the Objects representing the column type
*@param c the column nr
public Class getColumnClass(int c)
if(c==0)
return new Boolean(true).getClass();
else
return kolomTypen[c-1].getClass();
*@param rowIndex the index of the row
*@param columnIndex the index of the column
*@return true if a cell is Editable,false otherwise (all cells are Editable)
public boolean isCellEditable(int rowIndex, int columnIndex)
return true;
* returns the name of the column
*@param column the column index
*@return a String containing the name of the column
public String getColumnName(int column)
if(column==0)
return "";
else
return kolomNamen[column-1];
*@return wheter or not 1 or rows is marked for deletion
public boolean deletionNeeded()
Boolean B;
for(int i=0;i<emptyLineIndex;i++)
B=(Boolean)keep.get(i);
if(!B.booleanValue())
return true;
return false;
* Deletes all rows which are marked for deletion
*@return the number of rows that have been deleted
public int deleteMarkedRows() // zou niets uit moeten maken of je eerst deleteMarkedRows() of isSavedToDB(true) aanroept
int aantalRows=0;
Boolean B;
for(int i=0;i<emptyLineIndex;i++)
B=(Boolean)keep.get(i);
if(!B.booleanValue())
if(deleteRow(i))
aantalRows++;
i--;
return aantalRows;
* deletes a single row
*@param row the row index
*@return true if the row was deleted, false otherwise
protected boolean deleteRow(int row)
boolean result=false;
if(row==emptyLineIndex) // emptyline kan niet gedelete worden
return result;
try
for(int j=0;j<DATA.length;j++)
DATA[j].remove(row);
changed.remove(row);
keep.remove(row);
emptyLineIndex--;
if(row < newRowsIndex)
newRowsIndex--;
result=true;
catch(Exception e)
e.printStackTrace();
return result;
* returns if the row has changed or not
*@param row the row index
*@return true if 1 or more cells in this row had their value changed or if 1 or more rows were added, false otherwise
public boolean hasChanged(int row)
Boolean B=(Boolean)changed.get(row);
return B.booleanValue();
* Methode waarmee men kan bepalen of 1 van de originele waarden ook veranderd is.
* Het geeft dus niet aan of er ook nieuwe rijen zijn toegevoegd.
public boolean hasChanged()
Boolean B;
for(int i=0;i<newRowsIndex;i++)
B=(Boolean)changed.get(i);
if(B.booleanValue())
return true;
return false;
* if true it sets all flags indicating a change to false, else nothing
*@param saved boolean indicating all changes are now to be considerd to be the original values, or not
public void isSavedToDB(boolean saved)
if(saved)
for(int i=0; i<changed.size();i++)
changed.set(i,new Boolean(false));
newRowsIndex=emptyLineIndex;
* @return the row nr. at which newly added entrys begin, updated after isSavedToDB(true) is called
public int getNewRowsIndex()
return newRowsIndex;
* allows the specification of certain columns that need to be filled in, if not a new row will not be made vissible
*@param columns an array containing the column indexes which must be set to a valid value
public void setPrimeColumns(int[] columns)
primecolumns=columns;
* allows retrieval of the PrimeColumns
*@return an arrayof int containing the column indexes
public int[] getPrimeColumns()
return primecolumns;
Ok some of the comments are in dutch go ahead an blame me :(
if you have any questions, just ask.
i also have a TableModel which can use automatic numbering
Oh numbers (currently only Integer and Long) are initiated wth a value of -1 if you want to display them as blank cells like i wanted to you modify a cellrenderer (or use mine)
Mr Mean -
I have a datatable with input fields assigned to each column. The user can edit values freely and then submit the changes for update. Because of the size of the list it appears that a huge amount of processing is required even though only a couple of rows are actually modified by the user.
Is there a "best practices" for handling large editable tables that anyone is aware of?
ThanksPresuming Oracle backend database.....(you didnt say)
Partitioning would seem a quick (and expensive $$$$) win, if you partition on date, be sure to use the same date key to perform 'partition pruning' , which is to say give the optimizer a chance to throw away all unrequired partitions before it starts going to disk. When you say 'didnt improve performance much' you need to give a partition wise join for the partitioning to become effective at query time - did you do this ? for example a dashboard prompt with a filter on week / month would help (assuming your week / month time dim column is joined on partition key)
Is your data model a star schema ? Do you have dimension metadata in your database ? I'd be looking at Materialized views and looking for some sort of aggregate rollup query re-write whereby you queries are re-written at run time to the Mview and does not hit your fact table.
As for caching, OBIEE caching is the last resort after you exhaust every other alternative, its not there to speed up queries and you would be hiding the problem, what when a user drills down or needs to run an ad-hoc report that is not cached ?
I would start with understanding Oracle execution plans, review your data model (with the view on speedy data extraction) and look at what Oracle DB gives for data warehousing appliances :
parallelism is your friend!
star transformation,
Mviews (table or Cube based)
OLAP
Maybe you are looking for
-
Camera is not connected.
How can I make my camera connect for FaceTime and Photo Booth to work? It keeps telling me that the camera is not connected.
-
I need an AS2 button that closes out a pop-up window...
So, I've constructed a portfolio site with ActionScript 2.0, but I would like the pop-up window that displays the portfolio image to have its own 'X' button that closes the swf movie from the browser. I'm assuming that the code begins something like
-
I am having problems downloading a TV show from itunes. The tech told me to get the latest version of itunes but I have OS 10.5.8 which is below the requirement for downloading the itunes new version. How do I upgrade my OS?
-
Z3200 custom paper list vs. OS X Yosemite (10.10.4)
Hi. Since I did the upgrade of OS X Yosemite to version 10.10.4, HP Utility is not able to syncronize the paper list already installed at our printers. Is someone experimenting the same issue? I would appreciate to hear from you how to solve this, b
-
Hi Experts, I have few basic questions in workflow. 1. What is the exact reason for making a task as general. If we make as general & if the agent resolution fails then workitem is sent to all users in the organisation which is risky. But still I can