I am trying the exercise in netbean website"Performing Inserts, Updates, and Deletes":
My results is.
my drop down works fine in the browser but my tablegives me error.
what am I doing wrong.
<table id="form1:table1:_table" class="Tbl_sun4" width="100%" border="0" cellpadding="0" cellspacing="0"
My JSP code
<?xml version="1.0" encoding="UTF-8"?>
<!--
Document : Page1
Created on : Apr 4, 2009, 11:42:42 AM
Author : Administrator
-->
<jsp:directive.page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"/>
<f:view>
<webuijsf

age id="page1">
<webuijsf:html id="html1">
<webuijsf:head id="head1">
<webuijsf:link id="link1" url="/resources/stylesheet.css"/>
</webuijsf:head>
<webuijsf:body id="body1" style="-rave-layout: grid">
<webuijsf:form binding="#{Page1.form1}" id="form1" virtualFormsConfig="person | personDD | personDD">
<webuijsf:dropDown binding="#{Page1.personDD}" converter="#{Page1.personDDConverter}" id="personDD"
items="#{Page1.personDataProvider.options['person.personid,person.name']}"
onChange="webui.suntheme4_2.common.timeoutSubmitFo rm(this.form, 'personDD');" style="left: 72px; top: 24px; position: absolute"/>
<webuijsf:messageGroup id="messageGroup1" style="position: absolute; left: 288px; top: 24px"/>
<webuijsf:table augmentTitle="false" id="table1" style="left: 72px; top: 120px; position: absolute; width: 474px" title="Trips Summary" width="0">
<webuijsf:tableRowGroup id="tableRowGroup1" rows="10" sourceData="#{Page1.tripDataProvider}" sourceVar="currentRow">
<webuijsf:tableColumn headerText="depdate" id="tableColumn3" sort="trip.depdate">
<webuijsf:textField id="textField1" text="#{currentRow.value['trip.depdate']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="depcity" id="tableColumn4" sort="trip.depcity">
<webuijsf:textField id="textField2" text="#{currentRow.value['trip.depcity']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="destcity" id="tableColumn5" sort="trip.destcity">
<webuijsf:textField id="textField3" text="#{currentRow.value['trip.destcity']}"/>
</webuijsf:tableColumn>
<webuijsf:tableColumn headerText="triptypeid" id="tableColumn6" sort="trip.triptypeid">
<webuijsf:dropDown id="dropDown1" items="#{currentRow.value['trip.triptypeid']}" selected="#{currentRow.value['trip.triptypeid']}"/>
</webuijsf:tableColumn>
</webuijsf:tableRowGroup>
</webuijsf:table>
</webuijsf:form>
</webuijsf:body>
</webuijsf:html>
</webuijsf

age>
</f:view>
</jsp:root>
My Java code.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package classproject;
import com.sun.data.provider.impl.CachedRowSetDataProvide r;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.model.DefaultTableDataProvider;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import javax.faces.FacesException;
import javax.faces.convert.IntegerConverter;
import javax.faces.event.ValueChangeEvent;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*
* @version Page1.java
* @version Created on Apr 4, 2009, 11:42:42 AM
* @author Administrator
*/
public class Page1 extends AbstractPageBean {
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
private void _init() throws Exception {
personDataProvider.setCachedRowSet((javax.sql.rows et.CachedRowSet) getValue("#{SessionBean1.personRowSet}"));
tripDataProvider.setCachedRowSet((javax.sql.rowset .CachedRowSet) getValue("#{SessionBean1.tripRowSet}"));
}
private DropDown personDD = new DropDown();
public DropDown getPersonDD() {
return personDD;
}
public void setPersonDD(DropDown dd) {
this.personDD = dd;
}
private Form form1 = new Form();
public Form getForm1() {
return form1;
}
public void setForm1(Form f) {
this.form1 = f;
}
private CachedRowSetDataProvider personDataProvider = new CachedRowSetDataProvider();
public CachedRowSetDataProvider getPersonDataProvider() {
return personDataProvider;
}
public void setPersonDataProvider(CachedRowSetDataProvider crsdp) {
this.personDataProvider = crsdp;
}
private IntegerConverter personDDConverter = new IntegerConverter();
public IntegerConverter getPersonDDConverter() {
return personDDConverter;
}
public void setPersonDDConverter(IntegerConverter ic) {
this.personDDConverter = ic;
}
private CachedRowSetDataProvider tripDataProvider = new CachedRowSetDataProvider();
public CachedRowSetDataProvider getTripDataProvider() {
return tripDataProvider;
}
public void setTripDataProvider(CachedRowSetDataProvider crsdp) {
this.tripDataProvider = crsdp;
}
private CachedRowSetDataProvider cachedRowSetDataProvider1 = new CachedRowSetDataProvider();
public CachedRowSetDataProvider getCachedRowSetDataProvider1() {
return cachedRowSetDataProvider1;
}
public void setCachedRowSetDataProvider1(CachedRowSetDataProvi der crsdp) {
this.cachedRowSetDataProvider1 = crsdp;
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public Page1() {
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
@Override
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
try {
_init();
} catch (Exception e) {
log("Page1 Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
}
// </editor-fold>
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess() {
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
@Override
public void prerender() {
if (personDD.getSelected() == null) {
Object firstPersonId = null;
try {
personDataProvider.cursorFirst();
firstPersonId = personDataProvider.getValue("PERSON.PERSONID");
personDD.setSelected(firstPersonId);
getSessionBean1().getTripRowSet().setObject(
1, firstPersonId);
tripDataProvider.refresh();
} catch (Exception e) {
error("Cannot switch to person " +
firstPersonId);
log("Cannot switch to person " +
firstPersonId, e);
}
}
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
@Override
public void destroy() {
personDataProvider.close();
tripDataProvider.close();
cachedRowSetDataProvider1.close();
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1) getBean("RequestBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1) getBean("ApplicationBean1");
}
public void personDD_processValueChange(ValueChangeEvent event) {
Object selectedPersonId = personDD.getSelected();
try {
personDataProvider.setCursorRow(
personDataProvider.findFirst("PERSON.PERSONID",
selectedPersonId));
getSessionBean1().getTripRowSet().setObject(1, selectedPersonId);
tripDataProvider.refresh();
form1.discardSubmittedValues("save");
} catch (Exception e) {
error("Cannot switch to person " + selectedPersonId);
log("Cannot switch to person " + selectedPersonId, e);
}
}
}