- Start with the struts-blank application
- Create the search.jsp file
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
<%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
<%@ page import="beans.Employee,business.Sorter,java.util.List,org.displaytag.tags.TableTagParameters,org.displaytag.util.ParamEncoder"%>
<html:html>
<head>
<title>Search page</title>
<link rel="stylesheet" type="text/css"
href="/StrutsPaging/css/screen.css" />
</head>
<body bgcolor="white">
<html:form action="/search.do">
<table>
<tr>
<td>Minimum Salary:</td>
<td><html:text property="minSalary"></html:text></td>
</tr>
<tr>
<td colspan="2"><html:submit property="submit" /></td>
</tr>
</table>
</html:form>
<logic:notEqual name="empList" value="null">
<jsp:scriptlet>
if (session.getAttribute("empList") != null) {
String sortBy = request.getParameter((new ParamEncoder("empTable")).encodeParameterName(TableTagParameters.PARAMETER_SORT));
Sorter.sort((List) session.getAttribute("empList"), sortBy);
}
</jsp:scriptlet>
<display:table name="sessionScope.empList" pagesize="4" id="empTable" sort="external" defaultsort="1" defaultorder="ascending" requestURI="">
<display:column property="empId" title="ID" sortable="true" sortName="empId" headerClass="sortable" />
<display:column property="empName" title="Name" sortName="empName" sortable="true" headerClass="sortable" />
<display:column property="empJob" title="Job" sortable="true" sortName="empJob" headerClass="sortable" />
<display:column property="empSal" title="Salary" sortable="true" headerClass="sortable" sortName="empSal" />
</display:table>
</logic:notEqual>
</body>
</html:html>pages/search.jsp - Create the Action class:
public class SearchAction extends Action {
private BusinessInterface businessInterface;
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse httpservletresponse) throws Exception {
if (form == null) {
return mapping.findForward("success");
}
try {
SearchForm searchForm = (SearchForm) form;
if (searchForm.getMinSalary() == null || searchForm.getMinSalary().equals("")) {
return mapping.findForward("success");
}
long minSal = Long.parseLong(searchForm.getMinSalary());
System.out.println("Business Interface: " + businessInterface);
List data = businessInterface.getData(minSal);
System.out.println("Data : " + data);
request.getSession().setAttribute("empList", data);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("success");
}
public void setBusinessInterface(BusinessInterface bi) {
businessInterface = bi;
}
}SearchAction.java
Note that the action class has a property businessInterface. This property will be set by spring when loading the action class. - Define the form and action beans in struts-config.xml
<form-beans>
Note that, in the action-mapping, the action type is defined as "org.springframework.web.struts.DelegatingActionProxy". This will ensure that Spring will take care of handling struts actions.
<form-bean name="searchForm" type="forms.SearchForm" />
</form-beans>
<action-mappings>
<action path="/Welcome" forward="/pages/Welcome.jsp" />
<action name="searchForm" path="/search" scope="session" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="success" path="/pages/search.jsp"></forward>
</action>
</action-mappings> - Integrate Struts And Spring: The final step of integration is to add a spring plugin to struts-config.xml. The plugin defines the location of the spring bean-factory definitions.
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
This is one way of integrating struts and spring, for other ways of integration, refer to : Get a better handle on Struts actions, with Spring
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml"/>
</plug-in>
Tuesday, December 05, 2006
Data Access with Spring and Struts: Part 1
The struts pagination post contained an example of using Hibernate for data access too. In this post, I use the same example to implement the same pagination example using Spring. In this part we will see how to get a struts application ready for spring, the next part describes how to implement data access in spring. Follow these steps to run the example.
Labels:
example/sample code,
persistence,
spring,
struts
Subscribe to:
Post Comments (Atom)
Popular Posts
-
In a previous post, I described how to use Quartz scheduler for scheduling . In this post, I describe the configuration changes required for...
-
JUnit 4 introduces a completely different API to the older versions. JUnit 4 uses Java 5 annotations to describe tests instead of using in...
-
This post will describe how to create and deploy a Java Web Application war to Heroku using Heroku CLI. You will need a basic understanding ...
-
New posts with iText 5.5.12 Following are two new posts for PDF Merge with iText 5.5.12 Merge PDF files using iText 5 Merge and Paginate PDF...
-
This is an example code for a simple PDF merge using iText 5. We use three InputStream s in a List as input and merged file is written to th...
-
Big Faceless Report Generator is a commercial Java API for generating PDF files from XML input . The report generator is built on the Big F...
-
The previous post described how to implement a JMS messaging client using Spring JMS . This post will describe how to implement the Message ...
-
Displaytag is an opensource tag library that can be used to display tables on JSPs. Apart from being able to display tables, the displaytag...
-
Last week, I described how to implement JMS, using a stand-alone client and a Message Driven Bean . In this post and the next, I will descr...
-
In this post we will see a way to merge multiple PDF files while adding page numbers at the bottom of each page in the format Page 1 of 10 ....
do you have any idea of integrating struts with spring 2... i mean is theare any proxy class for Spring2. The example you have given is for Spring 1.x
ReplyDeleteThis example was implemented on Spring 2.0.1.
ReplyDeleteHi, Im having some problems while trying to use Spring AOP with Struts Actions, and I wonder if you could help me?
ReplyDeleteIm using spring 2.0.4, and struts 1.3, I dont know if that makes any difference?
So my struts-config is something like this:
....
< action-mappings>
< action path="/prueba"
type="org.springframework.web.struts.DelegatingAct ionProxy"
scope="request" validate="false" parameter="cmd">
< /action>
< /action-mappings>
< plug-in className="org.springframework.web.struts.ContextL oaderPlugIn">
< set-property property="contextConfigLocation"
value="WEB-INF/classes/applicationContext.xml"/>
< /plug-in>
..
And my bean definition is:
....
< bean name="/prueba" scope="prototype" autowire="byName"
class="prueba.integracion.PruebaAction" />
< aop:aspectj-autoproxy proxy-target-class="true" />
...
The error Im getting is org.springframework.beans.factory.BeanNotOfRequire dTypeException, Bean named '/prueba' must be of type [org.apache.struts.action.Action], but was actually of type [$Proxy6]
Im a bit stuck with this, so Id appreciatte any help.
Thanks
Try in struts instead this:
ReplyDelete> action path="/prueba"
type="org.springframework.web.struts.DelegatingAct ionProxy"
scope="request" validate="false" parameter="cmd"<
something like this(without DelegatingAct ionProxy):
>action path="/edit" name="inputForm"
type="example.action.ViewAction" validate="false" scope="request"
parameter="op"<
>forward name="list" path="/jsp/index.jsp" /<
<forward name="add" path="/jsp/input.jsp" />
</action>
and add:
<controller>
<set-property property="processorClass"
value="org.springframework.web.struts.DelegatingRequestProcessor" />
</controller>
From the tons of comments on your articles, Thank you.
ReplyDeleteSo wonderful to discover somebody with some original thoughts on this topic.
ReplyDeleteWe actually installed a roof on one of their homes in Texas! Great guys.
ReplyDeleteAppreciating the time and effort you put into your site and detailed information you offer.
ReplyDeleteAs a marketing communications student, thank you!!
ReplyDeleteYour post is very interesting to me. Reading was so much fun.
ReplyDelete