Author: mrdon
Date: Sat Jun 17 22:47:30 2006
New Revision: 415098

URL: http://svn.apache.org/viewvc?rev=415098&view=rev
Log:
Changed JSF example to use common CRUD actions and DAO's, reorganizes
pages to match other example

WW-1320

Added:
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/JsfEmployeeAction.java
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/edit.jsp
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/list.jsp
Removed:
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/EditEmployeeAction.java
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/Employee.java
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/EmployeeDao.java
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/ListEmployeesAction.java
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/editEmployee.jsp
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/listEmployees.jsp
Modified:
    
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/action/EmployeeAction.java
    struts/action2/trunk/apps/showcase/src/main/resources/xwork-jsf.xml
    
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
    struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/web.xml
    struts/action2/trunk/apps/showcase/src/main/webapp/jsf/index.jsp

Modified: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/action/EmployeeAction.java
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/action/EmployeeAction.java?rev=415098&r1=415097&r2=415098&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/action/EmployeeAction.java
 (original)
+++ 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/action/EmployeeAction.java
 Sat Jun 17 22:47:30 2006
@@ -31,7 +31,7 @@
 import java.util.List;
 
 /**
- * EditEmployeeAction.
+ * JsfEmployeeAction.
  */
 
 public class EmployeeAction extends AbstractCRUDAction implements Preparable {
@@ -83,7 +83,7 @@
 
     public void setEmployeeDao(EmployeeDao employeeDao) {
         if (log.isDebugEnabled()) {
-            log.debug("EditEmployeeAction - [setEmployeeDao]: employeeDao 
injected.");
+            log.debug("JsfEmployeeAction - [setEmployeeDao]: employeeDao 
injected.");
         }
         this.employeeDao = employeeDao;
     }

Added: 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/JsfEmployeeAction.java
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/JsfEmployeeAction.java?rev=415098&view=auto
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/JsfEmployeeAction.java
 (added)
+++ 
struts/action2/trunk/apps/showcase/src/main/java/org/apache/struts/action2/showcase/jsf/JsfEmployeeAction.java
 Sat Jun 17 22:47:30 2006
@@ -0,0 +1,119 @@
+/*
+ * $Id: QuizAction.java 394498 2006-04-16 15:28:06Z tmjee $
+ *
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.struts.action2.showcase.jsf;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.struts.action2.showcase.action.EmployeeAction;
+import org.apache.struts.action2.showcase.dao.SkillDao;
+import org.apache.struts.action2.showcase.model.Employee;
+import org.apache.struts.action2.showcase.model.Skill;
+
+/**
+ * Overriding the EmployeeAction to main provide getters returning the data in
+ * the form required by the JSF components
+ */
+public class JsfEmployeeAction extends EmployeeAction {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * Creating a default employee and main skill, since the JSF EL can't 
handle
+     * creating new objects as necessary
+     * 
+     */
+    public JsfEmployeeAction() {
+        Employee e = new Employee();
+        e.setMainSkill(new Skill());
+        setCurrentEmployee(e);
+    }
+
+    private SkillDao skillDao;
+
+    public void setSkillDao(SkillDao skillDao) {
+        this.skillDao = skillDao;
+    }
+
+    /**
+     * Returning a List because the JSF dataGrid can't handle a Set for some
+     * reason
+     */
+    @Override
+    public Collection getAvailableItems() {
+        return new ArrayList(super.getAvailableItems());
+    }
+
+    /**
+     * Changing the String array into a Map
+     */
+    public Map<String, String> getAvailablePositionsAsMap() {
+        Map<String, String> map = new LinkedHashMap<String, String>();
+        for (String val : super.getAvailablePositions()) {
+            map.put(val, val);
+        }
+        return map;
+    }
+
+    /**
+     * Converting the list into a map
+     */
+    public Map getAvailableLevelsAsMap() {
+        Map map = new LinkedHashMap();
+        for (Object val : super.getAvailableLevels()) {
+            map.put(val, val);
+        }
+        return map;
+    }
+
+    /**
+     * Converting the Skill object list into a map
+     */
+    public Map<String, String> getAvailableSkills() {
+        Map<String, String> map = new HashMap<String, String>();
+        for (Object val : skillDao.findAll()) {
+            Skill skill = (Skill) val;
+            map.put(skill.getDescription(), skill.getName());
+        }
+        return map;
+    }
+
+    /**
+     * Gets the selected Skill objects as a list
+     */
+    public List<String> getSelectedSkillsAsList() {
+        System.out.println("asked for skills");
+        List<String> list = new ArrayList<String>();
+        List skills = super.getSelectedSkills();
+        if (skills != null) {
+            for (Object val : skills) {
+                if (val instanceof Skill) {
+                    list.add(((Skill) val).getDescription());
+                } else {
+                    Skill skill = skillDao.getSkill((String) val);
+                    list.add(skill.getDescription());
+                }
+            }
+        }
+        return list;
+    }
+}

Modified: struts/action2/trunk/apps/showcase/src/main/resources/xwork-jsf.xml
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/resources/xwork-jsf.xml?rev=415098&r1=415097&r2=415098&view=diff
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/resources/xwork-jsf.xml 
(original)
+++ struts/action2/trunk/apps/showcase/src/main/resources/xwork-jsf.xml Sat Jun 
17 22:47:30 2006
@@ -3,20 +3,31 @@
     <include file="struts-default.xml"/>
     <include file="struts-jsf.xml"/>
 
-    <package name="jsf" extends="struts-default, struts-jsf" namespace="/jsf">
-    
-        <action name="listEmployees" 
class="org.apache.struts.action2.showcase.jsf.ListEmployeesAction">
-            <interceptor-ref name="jsfStack"/>
-            <result name="success" type="jsf" />
+       <package name="jsf" extends="struts-default, struts-jsf" 
namespace="/jsf">
+               <interceptors>
+            <interceptor-stack name="jsfFullStack">
+                               <interceptor-ref name="params" />
+                <interceptor-ref name="basicStack"/>
+                <interceptor-ref name="jsfStack"/>
+            </interceptor-stack>
+               </interceptors>
+               
+               <default-interceptor-ref name="jsfFullStack"/>
+    </package>
+                               
+    <package name="jsf.employee" extends="jsf" namespace="/jsf/employee">
+
+               <action name="list" 
class="org.apache.struts.action2.showcase.jsf.JsfEmployeeAction" method="list">
+                       <result name="success" type="jsf" />
         </action>
-    
-        <action name="editEmployee" 
class="org.apache.struts.action2.showcase.jsf.EditEmployeeAction">
-            <interceptor-ref name="basicStack"/>
-            <interceptor-ref name="jsfStack"/>
+        <action name="edit" 
class="org.apache.struts.action2.showcase.jsf.JsfEmployeeAction">
             <result name="success" type="jsf" />
-            <result name="index" type="redirect-action">listEmployees</result>
         </action>
-
+        <action name="delete" 
class="org.apache.struts.action2.showcase.action.EmployeeAction" 
method="delete">
+                       <result name="error" 
type="redirect">list.action</result>
+            <result type="redirect">list.action</result>
+        </action>
+               
     </package>
 
 </xwork>

Modified: 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp?rev=415098&r1=415097&r2=415098&view=diff
==============================================================================
--- 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp 
(original)
+++ 
struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/decorators/main.jsp 
Sat Jun 17 22:47:30 2006
@@ -76,7 +76,7 @@
                     <li><a href="<saf:url 
value="/token/index.jsp"/>">Token</a></li>
                     <li><a href="<saf:url 
value="/filedownload/index.jsp"/>">File Download</a></li>
                     <li><a href="<saf:url 
value="/conversion/index.jsp"/>"/>Conversion</a></li>
-                    <li><a href="<saf:url action="index" 
namespace="/jsf"/>">JSF</a></li>
+                    <li><a href="<saf:url 
value="/jsf/index.jsp"/>">JSF</a></li>
                     <li><a href="<saf:url 
value="/freemarker/index.jsp"/>">Freemarker</a>
                     <li><a href="<saf:url value="/chat/index.jsp"/>">Chat 
(AJAX)</a>
                     <li class="last"><a href="<saf:url 
value="/help.jsp"/>">Help</a></li>

Modified: struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/web.xml
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/web.xml?rev=415098&r1=415097&r2=415098&view=diff
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/web.xml 
(original)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/WEB-INF/web.xml Sat Jun 
17 22:47:30 2006
@@ -42,11 +42,11 @@
         
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
     </listener>
        
-       <listener>
-    <listener-class>
-      org.apache.myfaces.webapp.StartupServletContextListener
-    </listener-class>
-  </listener>
+    <listener>
+        <listener-class>
+          org.apache.myfaces.webapp.StartupServletContextListener
+        </listener-class>
+    </listener>
        
     <!-- SNIPPET START: dwr -->
 
@@ -67,9 +67,9 @@
        </servlet>
 
        <!-- JavaServer Faces Servlet Mapping, not called directly -->
-       <servlet-mapping>
-       <servlet-name>faces</servlet-name>
-       <url-pattern>*.action</url-pattern>
+       <servlet-mapping>
+        <servlet-name>faces</servlet-name>
+        <url-pattern>*.action</url-pattern>
        </servlet-mapping>
 
     <servlet-mapping>

Added: struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/edit.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/edit.jsp?rev=415098&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/edit.jsp 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/edit.jsp 
Sat Jun 17 22:47:30 2006
@@ -0,0 +1,106 @@
+<%--
+
+ Copyright 2006 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: welcome.jsp 371852 2006-01-24 07:25:10Z craigmcc $
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"; %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"; %>
+
+<f:view>
+
+<html>
+<!--  todo: make header variable -->
+  <head>
+    <title>JSF Integration Examples</title>
+  </head>
+
+  <body>
+  
+       <h1>Modify Employee</h1>
+       
+       <h:form>
+               <h:inputHidden value="#{action.currentEmployee.empId}" />
+               <h:panelGrid columns="3">
+                   <h:outputText value="Employee Id:" />
+                       <h:inputText id="id" size="5" 
value="#{action.currentEmployee.empId}" required="true" />
+                       <h:message for="id" />
+                       
+                       <h:outputText value="First Name:" />
+                       <h:inputText id="firstName" size="30" 
value="#{action.currentEmployee.firstName}" required="true">
+                           <f:validateLength minimum="2" maximum="30" />
+                       </h:inputText>
+                       <h:message for="firstName" />
+                       
+                       <h:outputText value="Last Name:" />
+                       <h:inputText id="lastName" size="30" 
value="#{action.currentEmployee.lastName}" required="true">
+                           <f:validateLength minimum="2" maximum="30" />
+                       </h:inputText>
+                       <h:message for="lastName" />
+                       
+                       <h:outputText value="Salary:" />
+                       <h:inputText id="salary" size="10" 
value="#{action.currentEmployee.salary}" />
+                       <h:message for="salary" />
+                       
+                       <h:outputText value="Married:" />
+                       <h:selectBooleanCheckbox id="married" 
value="#{action.currentEmployee.married}" />
+                       <h:message for="married" />
+                       
+                       <h:outputText value="Position:" />
+                       <h:selectOneMenu id="position" 
value="#{action.currentEmployee.position}">
+                       <f:selectItems 
value="#{action.availablePositionsAsMap}" />
+                       </h:selectOneMenu>
+                       <h:message for="position" />
+                       
+                       <h:outputText value="Main Skill:" />
+                       <h:selectOneMenu id="mainSkill" 
value="#{action.currentEmployee.mainSkill.name}">
+                           <f:selectItems value="#{action.availableSkills}" />
+                       </h:selectOneMenu>
+                       <h:message for="mainSkill" />
+                       
+                       <h:outputText value="Other Skills:" />
+                       <h:selectManyListbox id="otherSkills" 
value="#{action.selectedSkills}" >
+                           <f:selectItems value="#{action.availableSkills}" />
+                       </h:selectManyListbox>
+                       <h:message for="otherSkills" />
+                       
+                       <h:outputText value="Password:" />
+                       <h:inputSecret id="password" 
value="#{action.currentEmployee.password}" />
+                       <h:message for="password" />
+                       
+                       <h:outputText value="Level:" />
+                       <h:selectOneRadio id="level" 
value="#{action.currentEmployee.level}" >
+                           <f:selectItems 
value="#{action.availableLevelsAsMap}" />
+                       </h:selectOneRadio>
+                       <h:message for="level" />
+                       
+                       <h:outputText value="Comment:" />
+                       <h:inputTextarea id="comment" 
value="#{action.currentEmployee.comment}" cols="50" rows="3" />
+                       <h:message for="comment" />
+               </h:panelGrid>
+               
+               <h:commandButton value="Save" action="#{action.save}" />
+               <br /><br />
+               <h:outputLink value="list.action">
+                       <h:outputText value="Back" />
+               </h:outputLink>
+       </h:form>
+  </body>
+
+</html>
+
+</f:view>
\ No newline at end of file

Added: struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/list.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/list.jsp?rev=415098&view=auto
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/list.jsp 
(added)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/jsf/employee/list.jsp 
Sat Jun 17 22:47:30 2006
@@ -0,0 +1,69 @@
+<%--
+
+ Copyright 2006 The Apache Software Foundation.
+ 
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+ 
+      http://www.apache.org/licenses/LICENSE-2.0
+ 
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+ $Id: welcome.jsp 371852 2006-01-24 07:25:10Z craigmcc $
+
+--%>
+
+<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core"; %>
+<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html"; %>
+
+<f:view>
+
+<html>
+<head><title>Available Employees</title></head>
+
+<body>
+<h1>Available Employees</h1>
+       
+       <h:dataTable value="#{action.availableItems}" var="e">
+               <h:column>
+                       <f:facet name="header">
+                               <h:outputText value="Id" />
+                       </f:facet>
+                       <h:outputLink value="edit.action">
+                               <f:param name="empId" value="#{e.empId}" />
+                               <h:outputText value="#{e.empId}" />
+                       </h:outputLink> 
+               </h:column>
+               <h:column>
+                       <f:facet name="header">
+                               <h:outputText value="First Name" />
+                       </f:facet>
+                       <h:outputText value="#{e.firstName}" />
+               </h:column>
+               <h:column>
+                       <f:facet name="header">
+                               <h:outputText value="Last Name" />
+                       </f:facet>
+                       <h:outputText value="#{e.lastName}" />
+               </h:column>
+       </h:dataTable>  
+       
+       <p>
+       <h:outputLink value="edit.action">
+               <h:outputText value="Create new Employee" />
+       </h:outputLink>
+       </p>
+       
+       <h:outputLink value="../../showcase.action">
+               <h:outputText value="Back to Showcase Startpage" />
+       </h:outputLink>
+  </body>
+
+</html>
+
+</f:view>
\ No newline at end of file

Modified: struts/action2/trunk/apps/showcase/src/main/webapp/jsf/index.jsp
URL: 
http://svn.apache.org/viewvc/struts/action2/trunk/apps/showcase/src/main/webapp/jsf/index.jsp?rev=415098&r1=415097&r2=415098&view=diff
==============================================================================
--- struts/action2/trunk/apps/showcase/src/main/webapp/jsf/index.jsp (original)
+++ struts/action2/trunk/apps/showcase/src/main/webapp/jsf/index.jsp Sat Jun 17 
22:47:30 2006
@@ -11,14 +11,14 @@
 The following pages show how Struts Action 2 and JSF components can work 
together,
 each doing what they do best.
 </p>
-       
+
 <p>
        <ul>
-               <li><saf:url id="url" namespace="/jsf" 
action="listEmployees"/><saf:a href="%{url}">List available 
Employees</saf:a></li>
-        <li><saf:url id="url" namespace="/jsf" action="editEmployee"/><saf:a 
href="%{url}">Create/Edit Employee</saf:a></li>
+        <li><saf:url id="url" namespace="/jsf/employee" action="list"/><saf:a 
href="%{url}">List available Employees</saf:a></li>
+        <li><saf:url id="url" namespace="/jsf/employee" action="edit"/><saf:a 
href="%{url}">Create/Edit Employee</saf:a></li>
        </ul>
 </p>
-<p>
+
 
 </body>
-</html>
\ No newline at end of file
+</html>


Reply via email to