`

struts2 crud

阅读更多

1.Caused by: com.opensymphony.xwork2.inject.ContainerImpl$MissingDependencyException: No mapping found for dependency [type=java.lang.String, name='actionPackages'] in public void org.apache.struts2.config.ClasspathPackageProvider.setActionPackages(java.lang.String).??

 

需要配置<filter>  
  <filter-name>struts2</filter-name>  
  <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
  <init-param>
   <param-name>actionPackages</param-name>
         <param-value>org.apache.struts2.showcase.action</param-value> //action所在的包
  </init-param>
</filter>
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
   
     <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>       //和spring集成

 

2.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 default-autowire="byName">    //不用再写property

    <bean id="storage" class="org.apache.struts2.showcase.application.MemoryStorage" singleton="true"/>

    <bean id="testDataProvider" class="org.apache.struts2.showcase.application.TestDataProvider" singleton="true" lazy-init="false"/>

    <bean id="skillDao" class="org.apache.struts2.showcase.dao.SkillDao"/>
    <bean id="employeeDao" class="org.apache.struts2.showcase.dao.EmployeeDao"/>

</beans>

 

3.action:

 

public class SkillAction extends AbstractCRUDAction implements Preparable {

    private static final Logger log = Logger.getLogger(SkillAction.class);

    private String skillName;                   和<s:param name="skillName" value="name"/>有关
    protected SkillDao skillDao;
    private Skill currentSkill;               

                               // <result type="redirect">edit.action?skillName=${currentSkill.name}</result>

                                    <s:textfield label="%{getText('skill.name')}" name="currentSkill.name"/>

    public String getSkillName() {
        return skillName;
    }

    public void setSkillName(String skillName) {
        this.skillName = skillName;
    }

    protected Dao getDao() {
     System.out.println("skillDAO: "+skillDao);
        return skillDao;
    }

    public void setSkillDao(SkillDao skillDao) {
        if (log.isDebugEnabled()) {
            log.debug("SkillAction - [setSkillDao]: skillDao injected.");
        }
        this.skillDao = skillDao;
    }

    public Skill getCurrentSkill() {
        return currentSkill;
    }

    public void setCurrentSkill(Skill currentSkill) {
        this.currentSkill = currentSkill;
    }

    /**
     * This method is called to allow the action to prepare itself.
     *
     * @throws Exception thrown if a system level exception occurs.
     */
    public void prepare() throws Exception {
        Skill preFetched = (Skill) fetch(getSkillName(), getCurrentSkill());
        if (preFetched != null) {
            setCurrentSkill(preFetched);
        }
    }

    public String save() throws Exception {
        if (getCurrentSkill() != null) {
            setSkillName((String) skillDao.merge(getCurrentSkill()));
        }
        return SUCCESS;
    }

}

 

4.interceptor:

 

5.struts.xml:

 

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>

 

 <package name="default" extends="struts-default">
        <interceptors>
            <interceptor-stack name="crudStack">
              <interceptor-ref name="checkbox" />
                <interceptor-ref name="params" />
        <interceptor-ref name="staticParams" />
                <interceptor-ref name="defaultStack" />
            </interceptor-stack>
        </interceptors>

</package>
    <package name="skill" extends="default" namespace="/skill">
        <default-interceptor-ref name="crudStack"/>

        <action name="list" class="org.apache.struts2.showcase.action.SkillAction" method="list">
            <result>/empmanager/listSkills.jsp</result>
            <interceptor-ref name="basicStack"/>
        </action>
        <action name="edit" class="org.apache.struts2.showcase.action.SkillAction">
            <result>/empmanager/editSkill.jsp</result>
            <interceptor-ref name="params" />
            <interceptor-ref name="basicStack"/>
        </action>
        <action name="save" class="org.apache.struts2.showcase.action.SkillAction" method="save">
            <result name="input">/empmanager/editSkill.jsp</result>
            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
        </action>
        <action name="delete" class="org.apache.struts2.showcase.action.SkillAction" method="delete">
            <result name="error">/empmanager/editSkill.jsp</result>
            <result type="redirect">edit.action?skillName=${currentSkill.name}</result>
        </action>
    </package>
</struts>

 

6.page:

<s:iterator value="availableItems">     //list
        <tr>
            <td><a href="<s:url action="edit"><s:param name="skillName" value="name"/></s:url>"><s:property value="name"/></a></td>
            <td><s:property value="description"/></td>
        </tr>
    </s:iterator>

 

7.Preparable:

import com.opensymphony.xwork2.Preparable;

public void prepare() throws Exception {
  System.out.println("preparabe():............");
  Word w=null;
  if(id!=null){
   w=daoService.get(id);
  }
  if(w!=null){
   this.setCurrentWord(w);
  }
 }

每调用一次action,都会在执行execute()方法前调用preparabe();

8.new 和 edit用一个页面:

<s:if test="currentWord!=null">
    <s:set name="submitType" value="'update'"/>
    <s:text id="title" name="item.edit"><s:param><s:text name="word"/></s:param></s:text>
</s:if>
<s:else>
    <s:set name="submitType" value="'create'"/>
    <s:text var="title" name="item.create"><s:param><s:text name="word"/></s:param></s:text>
</s:else>

 

s:form action="save">
    <s:textfield label="%{getText('word.id.label')}" name="currentWord.id"/>
    <s:textfield label="%{getText('word.content.label')}" name="currentWord.content"/>
    <%--s:submit name="%{#submitType}" value="%{getText('save')}" /--%>
    <s:submit value="%{getText('save')}" />
</s:form>

分享到:
评论
1 楼 yisshengyouni 2012-08-04  
谢谢分享,刚遇到的问题解决了

相关推荐

    struts2CRUD

    Struts2 CRUD是一个基于Apache Struts2框架实现的创建、读取、更新和删除(Create, Read, Update, Delete)操作的示例项目。这个项目主要用于演示如何在Web应用程序中使用Struts2来处理基本的数据操作。Struts2是...

    struts2CRUD-2

    Struts2 CRUD-2 是一个基于Struts2框架实现的简单数据操作示例,主要涵盖了创建(Create)、读取(Read)、更新(Update)和删除(Delete)这四个数据库操作的基本功能。Struts2是一个非常流行的Java Web开发框架,...

    struts2 CRUD

    Struts2 CRUD是一个典型的Java Web开发中的概念,它涉及到Model-View-Controller(MVC)设计模式的应用,以及使用Struts2框架实现对单一数据库表的创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)功能。...

    struts2CRUD example

    struts2 CRUD example

    Struts2CRUD

    Struts2CRUD是一个基于Apache Struts2框架实现的创建、读取、更新和删除(CRUD)操作的示例项目。这个项目旨在帮助开发者理解如何在实际应用中利用Struts2来处理基本的数据操作。Struts2是一个流行的Java Web框架,...

    struts2crud

    Struts2 CRUD(创建、读取、更新、删除)是一个基于Java EE平台的常用操作,用于处理数据库中的数据。在给定的“struts2crud”项目中,开发者分享了自己的实现,而非依赖官方的帮助文档,这表明这是一个独立完成的...

    Struts2 CRUD(增加、读取、更新、删除)例子

    本教程“Struts2 CRUD(增加、读取、更新、删除)例子”提供了一个基础但全面的实践指南,帮助初学者理解如何在Struts2框架下实现数据操作的基本功能。 首先,CRUD是创建(Create)、读取(Read)、更新(Update)和...

    struts2-crud.zip_DEMO_Java web CRUD demo_struts2 CRUD_struts2 de

    本DEMO主要展示了如何使用Struts2实现CRUD操作,即创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的基本功能。下面我们将详细探讨Struts2框架以及如何在Java web应用中实现CRUD操作。 首先,了解...

    Struts2CRUD代码

    在 Struts2 中实现 CRUD 操作通常涉及控制器(Action)、模型(Model)和视图(View)的交互。 在这个代码片段中,我们看到一个 Struts2 Action 类,它包含了对数据库进行 CRUD 操作的方法。首先,类中声明了数据库...

    Java Struts2 实现CRUD

    Struts2是Java Web开发中一个非常流行的MVC框架,它极大地简化了Web应用程序的构建,特别是对于实现CRUD(创建、读取、更新、删除)操作。在本篇文章中,我们将深入探讨如何使用Java Struts2框架来完成这些基本的...

    Strut-crud.war(Struts的CRUD Demo Sample)

    struts的crud sample demo(struts-crud.war) 可以直接解压查看代码,或者放到工程中运行

    Struts2实现CRUD(增删改查)Maven版

    Struts2实现CRUD(增 删 改 查) Maven版; eclipse直接导入使用; 教程地址:http://blog.csdn.net/sky_zhangfan/article/details/1896842

    基于struts的CRUD

    在基于Struts的CRUD(创建、读取、更新和删除)操作中,我们将探讨如何利用Struts来处理基本的数据操作,以及如何与其他流行框架如Spring和MySQL数据库相结合。 **1. Struts框架** Struts是Apache软件基金会的一个...

    用Struts实现Table的CRUD(create、read、update、delete)

    在这个项目中,我们专注于使用Struts2来实现一个数据表的CRUD操作,包括创建(Create)、读取(Read)、更新(Update)和删除(Delete)。 首先,我们需要配置Struts2的核心框架。在`struts.xml`配置文件中,定义...

    Struts2整合Spring Hibernate的CRUD实例

    在"Struts2整合Spring Hibernate的CRUD实例"中,我们将探讨如何将这三个框架无缝集成,实现对数据库的数据创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作。下面将详细介绍这个实例中的关键知识...

    Struts实现CRUD操作

    在本教程中,我们将探讨如何利用Struts实现CRUD(创建、读取、更新和删除)操作,这是一些基本但至关重要的数据库交互功能。 首先,理解Struts框架的核心组件至关重要。ActionServlet是Struts的入口点,它处理HTTP...

Global site tag (gtag.js) - Google Analytics