Hi All
After reading a couple of text books on this topic, I thought I had it right.
...But, I was wrong...
Please tell me what I am missing. Thanks!
applicationContext.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverM anagerDataSource">
<property name="driverClassName"><value>oracle.jdbc.OracleDr iver</value></property>
<property name="url"><value>jdbc:oracle:thin:@localhost:1521 :ORCL</value></property>
<property name="username"><value>scott</value></property>
<property name="password"><value>tiger</value></property>
</bean>
<bean id="jsp1Bean" class="testjsf01.Jsp1Bean">
<property name="dataSource"><ref bean="dataSource"/></property>
</bean>
</beans>
Jsp1Bean class:
package testjsf01;
import org.springframework.jdbc.core.*;
import org.springframework.jdbc.core.support.JdbcDaoSuppo rt;
import org.springframework.jdbc.datasource.DriverManagerD ataSource;
import org.springframework.beans.factory.xml.XmlBeanFacto ry;
import org.springframework.core.io.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import java.util.ArrayList;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
public class Jsp1Bean extends JdbcDaoSupport
{
private JdbcTemplate template;
private DriverManagerDataSource dataSource;
public Jsp1Bean ()
{
}
public void setDataSource (DriverManagerDataSource dataSource)
{
this.dataSource = dataSource;
}
public DataModel getDataModel1() throws Exception
{
final ArrayList outList = new ArrayList();
template = new JdbcTemplate(dataSource);
class RowCallbackHandlerImpl implements RowCallbackHandler
{
public void processRow(ResultSet rs) throws SQLException
{
ArrayList sublist = new ArrayList();
sublist.add(rs.getString(1));
sublist.add(rs.getString(2));
sublist.add(rs.getString(3));
outList.add(sublist);
}
}
template.query("select a.empno, a.ename, a.job from scott.emp a", new RowCallbackHandlerImpl());
return new ListDataModel(outList);
}
}
web.xml:
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>com.sun.faces.verifyObjects</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>com.sun.faces.validateXml</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoade rListener</listener-class>
</listener>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>30</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/tlds/spring.tld</taglib-location>
</taglib>
</web-app>
faces-context.xml:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faces-config PUBLIC "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN" "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
<faces-config>
<application>
<variable-resolver>org.springframework.web.jsf.DelegatingVar iableResolver</variable-resolver>
</application>
<managed-bean>
<managed-bean-name>jsp1Bean</managed-bean-name>
<managed-bean-class>testjsf01.Jsp1Bean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
Error messages:
Mar 17, 2006 1:08:10 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet Faces Servlet threw exception
javax.faces.el.EvaluationException: javax.faces.el.EvaluationException: Error getting property 'dataModel1' from bean of type testjsf01.Jsp1Bean: java.lang.IllegalArgumentException: dataSource is required
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBi ndingImpl.java:206)
at com.sun.faces.el.ValueBindingImpl.getValue(ValueBi ndingImpl.java:154)
at javax.faces.component.UIData.getValue(UIData.java: 527)
at javax.faces.component.UIData.getDataModel(UIData.j ava:856)
-
-
-
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
Caused by: javax.faces.el.EvaluationException: Error getting property 'dataModel1' from bean of type testjsf01.Jsp1Bean: java.lang.IllegalArgumentException: dataSource is required
at com.sun.faces.el.PropertyResolverImpl.getValue(Pro pertyResolverImpl.java:89)


Reply With Quote