Bläddra i källkod

Added a simple form for user input.

Introduced common include JSP fragment.
Downgraded to Servlet 2.4 as EL did not evaluate (will investigate this further).
Jesper Hammarbäck 19 år sedan
förälder
incheckning
e22af37f04

+ 47
- 0
dddsample/src/main/java/se/citerus/dddsample/web/CargoTrackingController.java Visa fil

@@ -0,0 +1,47 @@
1
+package se.citerus.dddsample.web;
2
+
3
+import org.springframework.web.servlet.ModelAndView;
4
+import org.springframework.web.servlet.mvc.SimpleFormController;
5
+import se.citerus.dddsample.domain.Cargo;
6
+import se.citerus.dddsample.domain.Location;
7
+import se.citerus.dddsample.service.CargoService;
8
+
9
+import javax.servlet.ServletException;
10
+import java.util.HashMap;
11
+import java.util.Map;
12
+
13
+/**
14
+ * Controller for tracking cargo.
15
+ */
16
+public class CargoTrackingController extends SimpleFormController {
17
+
18
+  /**
19
+   * Service instance.
20
+   */
21
+  private CargoService cargoService;
22
+
23
+  @Override
24
+  public ModelAndView onSubmit(final Object command) throws ServletException {
25
+    final Map<String, Object> model = new HashMap<String, Object>();
26
+
27
+    final TrackCommand trackCommand = (TrackCommand) command;
28
+    logger.debug("Finding cargo by trackingId: " + trackCommand.getTrackingId());
29
+    final Cargo cargo = cargoService.find(trackCommand.getTrackingId());
30
+
31
+    if (cargo != null) {
32
+      final Location location = cargo.currentLocation();
33
+      logger.debug("Location of [" + trackCommand.getTrackingId() + "] is [" + location + "]");
34
+      model.put("location", location);
35
+    }
36
+    return new ModelAndView(getSuccessView(), model);
37
+  }
38
+
39
+  /**
40
+   * Sets the cargo service instance.
41
+   *
42
+   * @param cargoService The service.
43
+   */
44
+  public void setCargoService(final CargoService cargoService) {
45
+    this.cargoService = cargoService;
46
+  }
47
+}

+ 0
- 32
dddsample/src/main/java/se/citerus/dddsample/web/DispatchController.java Visa fil

@@ -1,32 +0,0 @@
1
-package se.citerus.dddsample.web;
2
-
3
-import javax.servlet.http.HttpServletRequest;
4
-import javax.servlet.http.HttpServletResponse;
5
-
6
-import org.springframework.web.servlet.ModelAndView;
7
-import org.springframework.web.servlet.mvc.multiaction.MultiActionController;
8
-
9
-import se.citerus.dddsample.domain.Cargo;
10
-import se.citerus.dddsample.service.CargoService;
11
-
12
-public class DispatchController extends MultiActionController {
13
-  private CargoService cargoService;
14
-  
15
-  public ModelAndView cargo(HttpServletRequest request, HttpServletResponse response) throws Exception {
16
-    Cargo cargo = cargoService.find("XYZ");
17
-    
18
-    ModelAndView mav = new ModelAndView("cargo");
19
-    mav.addObject("location", cargo.currentLocation());
20
-    
21
-    return mav;
22
-  }
23
-  
24
-
25
-  public CargoService getCargoService() {
26
-    return cargoService;
27
-  }
28
-
29
-  public void setCargoService(CargoService cargoService) {
30
-    this.cargoService = cargoService;
31
-  }
32
-}

+ 24
- 0
dddsample/src/main/java/se/citerus/dddsample/web/TrackCommand.java Visa fil

@@ -0,0 +1,24 @@
1
+package se.citerus.dddsample.web;
2
+
3
+public class TrackCommand {
4
+
5
+  /**
6
+   * The tracking id.
7
+   */
8
+  private String trackingId;
9
+
10
+  public String getTrackingId() {
11
+    return trackingId;
12
+  }
13
+
14
+  public void setTrackingId(final String trackingId) {
15
+    this.trackingId = trackingId;
16
+  }
17
+
18
+  @Override
19
+  public String toString() {
20
+    return "TrackCommand{" +
21
+        "trackingId='" + trackingId + '\'' +
22
+        '}';
23
+  }
24
+}

+ 11
- 16
dddsample/src/main/webapp/WEB-INF/dispatch-servlet.xml Visa fil

@@ -4,25 +4,20 @@
4 4
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
5 5
 
6 6
   <import resource="classpath:applicationContext.xml"/>
7
-  
8
-  <bean id="dispatchController" class="se.citerus.dddsample.web.DispatchController">
9
-    <property name="cargoService" ref="cargoService" />
7
+
8
+  <bean name="/start.html" class="se.citerus.dddsample.web.CargoTrackingController">
9
+    <property name="sessionForm" value="true"/>
10
+    <property name="commandName" value="trackCommand"/>
11
+    <property name="commandClass" value="se.citerus.dddsample.web.TrackCommand"/>
12
+    <property name="formView" value="start"/>
13
+    <property name="successView" value="cargo"/>
14
+    <property name="cargoService" ref="cargoService"/>
10 15
   </bean>
11 16
 
12 17
   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
13
-    <property name="prefix">
14
-      <value>/views/</value>
15
-    </property>
16
-    <property name="suffix">
17
-      <value>.jsp</value>
18
-    </property>
18
+    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property>
19
+    <property name="prefix" value="/WEB-INF/jsp/"></property>
20
+    <property name="suffix" value=".jsp"></property>
19 21
   </bean>
20 22
 
21
-  <bean id="urlMapping"  class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
22
-    <property name="mappings">
23
-      <props>
24
-        <prop key="/*">dispatchController</prop>
25
-      </props>
26
-    </property>
27
-  </bean>
28 23
 </beans>

+ 18
- 0
dddsample/src/main/webapp/WEB-INF/jsp/cargo.jsp Visa fil

@@ -0,0 +1,18 @@
1
+<%@ include file="/WEB-INF/jspf/include.jspf" %>
2
+
3
+<html>
4
+<body>
5
+<c:choose>
6
+  <c:when test="${location ne null}">
7
+    <p>Your cargo is currently at: <b>${location}</b></p>
8
+  </c:when>
9
+  <c:otherwise>
10
+    <p>Unknown cargo id</p>
11
+  </c:otherwise>
12
+</c:choose>
13
+
14
+<br/>
15
+<a href="start.html">Start page</a>
16
+
17
+</body>
18
+</html>

+ 27
- 0
dddsample/src/main/webapp/WEB-INF/jsp/start.jsp Visa fil

@@ -0,0 +1,27 @@
1
+<%@ include file="/WEB-INF/jspf/include.jspf" %>
2
+
3
+<html>
4
+<body>
5
+
6
+<div>
7
+  <form:form method="post" commandName="trackCommand">
8
+    <table border="1" cellspacing="0" cellpadding="4">
9
+      <tr>
10
+        <td align="right">
11
+          Enter tracking id:
12
+        </td>
13
+        <td>
14
+          <form:input path="trackingId"/>
15
+        </td>
16
+        <td>
17
+          <form:errors path="trackingId" cssClass="error"/>
18
+        </td>
19
+      </tr>
20
+    </table>
21
+    <br>
22
+    <input type="submit" value="Track!">
23
+  </form:form>
24
+</div>
25
+
26
+</body>
27
+</html>

dddsample/src/main/webapp/views/cargo.jsp → dddsample/src/main/webapp/WEB-INF/jspf/include.jspf Visa fil

@@ -1,9 +1,5 @@
1 1
 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
2
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
2
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3
+<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
3 4
 
4
-<html>
5
-<body>
6
-Your cargo is currently at <br />
7
-<%= request.getAttribute("location") %>
8
-</body>
9
-</html>
5
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

+ 4
- 5
dddsample/src/main/webapp/WEB-INF/web.xml Visa fil

@@ -1,11 +1,10 @@
1 1
 <?xml version="1.0" encoding="UTF-8"?>
2 2
 
3
-<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
4
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
-  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
6
-    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
3
+<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
4
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
7 6
 
8
-  <display-name>DDDSample</display-name>
7
+<display-name>DDDSample</display-name>
9 8
 
10 9
   <servlet>
11 10
     <servlet-name>dispatch</servlet-name>

+ 2
- 4
dddsample/src/main/webapp/index.jsp Visa fil

@@ -1,5 +1,3 @@
1
-<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
2
-<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
1
+<%@ include file="/WEB-INF/jspf/include.jspf" %>
3 2
 
4
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
5
-<c:redirect url="/cargo.html"/>
3
+<c:redirect url="/start.html"/>