YAHOO.util.DataSource is not a constructor
(?)()
getTime()utilities.js (line 14)
getTime()utilities.js (line 14)
getTime()utilities.js (line 14)
[Break on this error] var formik_t_widget_datasource = new Y...AHOO.util.Dom.get('formik:t_table')); test.xhtml (line 68)
This is 68 line:
var formik_t_widget_datasource = new YAHOO.util.DataSource(YAHOO.util.Dom.get('formik:t_table'));
and this is a scrap of log:
Code: Select all
64<form id="formik" name="formik" method="post" action="/addressbook/faces/test.xhtml" enctype="application/x-www-form-urlencoded">
65<input type="hidden" name="formik" value="formik" />
66<span id="formik:pan"><script type="text/javascript">PrimeFaces.onContentReady('formik:t', function() {
67var formik_t_widget_columnDef = [{key:'rowIndex', hidden:true}];
68var formik_t_widget_datasource = new YAHOO.util.DataSource(YAHOO.util.Dom.get('formik:t_table'));
69formik_t_widget_datasource.responseType = YAHOO.util.DataSource.TYPE_HTMLTABLE;
70formik_t_widget_datasource.responseSchema = {fields:[{key:'rowIndex'}]};
71formik_t_widget = new PrimeFaces.widget.DataTable('formik:t',formik_t_widget_columnDef,formik_t_widget_datasource, {dynamicData:false});
72});
73</script><div id="formik:t"><div id="formik:t_container"><table id="formik:t_table" style="display:none"><tbody><tr><td>0</td></tr><tr><td>1</td></tr><tr><td>2</td></tr><tr><td>3</td></tr><tr><td>4</td></tr></tbody></table></div></div></span><input type="submit" name="formik:j_idt22" value="export" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-5719076527293838398:-1521622650628718885" autocomplete="off" />
74</form><br /></div>
The basic JSF code:
Code: Select all
<h:panelGroup binding="#{myBean.dynamicDataTableGroup}" />
Code: Select all
package mypackage;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.el.ValueExpression;
import javax.faces.component.HtmlColumn;
import javax.faces.component.HtmlOutputText;
import javax.faces.component.html.HtmlDataTable;
import javax.faces.context.FacesContext;
public class MyBean {
// Init --------------------------------------------------------------------------------------
private static List<List<String>> dynamicList; // Simulate fake DB.
private static String[] dynamicHeaders; // Optional.
private HtmlPanelGroup dynamicDataTableGroup; // Placeholder.
// Actions -----------------------------------------------------------------------------------
private void loadDynamicList() {
// Set headers (optional).
dynamicHeaders = new String[] {"ID", "Name", "Value"};
// Set rows. This is a stub example, just do your dynamic thing.
dynamicList = new ArrayList<List<String>>();
dynamicList.add(Arrays.asList(new String[] { "ID1", "Name1", "Value1" }));
dynamicList.add(Arrays.asList(new String[] { "ID2", "Name2", "Value2" }));
dynamicList.add(Arrays.asList(new String[] { "ID3", "Name3", "Value3" }));
dynamicList.add(Arrays.asList(new String[] { "ID4", "Name4", "Value4" }));
dynamicList.add(Arrays.asList(new String[] { "ID5", "Name5", "Value5" }));
}
private void populateDynamicDataTable() {
// Create <h:dataTable value="#{myBean.dynamicList}" var="dynamicItem">.
HtmlDataTable dynamicDataTable = new HtmlDataTable();
dynamicDataTable.setValueExpression("value",
createValueExpression("#{myBean.dynamicList}", List.class));
dynamicDataTable.setVar("dynamicItem");
// Iterate over columns.
for (int i = 0; i < dynamicList.get(0).size(); i++) {
// Create <h:column>.
HtmlColumn column = new HtmlColumn();
dynamicDataTable.getChildren().add(column);
// Create <h:outputText value="dynamicHeaders[i]"> for <f:facet name="header"> of column.
HtmlOutputText header = new HtmlOutputText();
header.setValue(dynamicHeaders[i]);
column.setHeader(header);
// Create <h:outputText value="#{dynamicItem[" + i + "]}"> for the body of column.
HtmlOutputText output = new HtmlOutputText();
output.setValueExpression("value",
createValueExpression("#{dynamicItem[" + i + "]}", String.class));
column.getChildren().add(output);
}
// Add the datatable to <h:panelGroup binding="#{myBean.dynamicDataTableGroup}">.
dynamicDataTableGroup = new HtmlPanelGroup();
dynamicDataTableGroup.getChildren().add(dynamicDataTable);
}
// Getters -----------------------------------------------------------------------------------
public HtmlPanelGroup getDynamicDataTableGroup() {
// This will be called once in the first RESTORE VIEW phase.
if (dynamicDataTableGroup == null) {
loadDynamicList(); // Preload dynamic list.
populateDynamicDataTable(); // Populate editable datatable.
}
return dynamicDataTableGroup;
}
public List<List<String>> getDynamicList() {
return dynamicList;
}
// Setters -----------------------------------------------------------------------------------
public void setDynamicDataTableGroup(HtmlPanelGroup dynamicDataTableGroup) {
this.dynamicDataTableGroup = dynamicDataTableGroup;
}
}