- 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
-
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 ...
-
In this post we will see how to do an offline install Jenkins and required plugins on a Red Hat Enterprise Linux Server release 7.3. This is...
-
Update: A new post for validation in struts with annotation is available at: Struts 2 Validation: Annotations . Struts 2.0 relies on a val...
-
The previous post described the Strategy pattern in brief. I listed out where and why the strategy pattern may be used. This post describes...
-
In a previous post, I described how to use Quartz scheduler for scheduling . In this post, I describe the configuration changes required for...
-
Java 8 introduced default and static methods, the previous post gives a few examples of Java 8 default and static methods . Java 9 builds on...
-
Tivoli Access Manager Configuration Steps for using AznAPI: 1.) Configure AMRTE 2.) Configure AMJRTE (This will install the necessary librar...
-
A class that switches between a set of states, and behaves differently based on the current state it is in, is a good candidate for the stat...
-
Google has opensourced it's Google Web Toolkit . The project is now fully opensource under the Apache 2.0 license . The new 1.3 RC has...
-
In the past, I posted an example on how to use Displaytag with Struts and Spring, using Spring JDBC for data access( 1 , 2 ). In this post,...
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