-1

我正在学习如何使用 struts2 和 hibernate,但我无法解决此异常“没有为命名空间 [/] 映射的操作和与上下文路径 [/ConsultarPatente] 关联的操作名称 [registrar_barrios]。”。我知道它被问了很多次,但在几种情况下很常见,我们也开始了:

下一个是建立在eclipse上的。

1.- 项目浏览器https://www.dropbox.com/s/4gg52h64e4hz64s/package.png?dl=0

2.- 代码(src 和 WebContent 文件夹)。 https://www.dropbox.com/s/x3q9qtq050a8anv/Files.rar?dl=0

3.- 我认为 AgregarBarrioAction 和 registrar_barrios 不起作用。

4.- 数据库。

CREATE TABLE `barrio_table` (
  `barrioId` int(11) NOT NULL auto_increment,
  `Nombre` varchar(24) collate utf8_bin NOT NULL,
  PRIMARY KEY  (`barrioId`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ;

5.- AgregarBarrioAction 代码。

package com.java.rmo.actions;

import java.util.ArrayList;
import java.util.List;

import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Actions;
import org.apache.struts2.convention.annotation.InterceptorRef;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;

import com.java.rmo.dao.BarrioDAO;
import com.java.rmo.dao.BarrioDAOImpl;
import com.java.rmo.model.Barrio;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;


@Namespace(value="/")
public class AgregarBarrioAction extends ActionSupport
implements ModelDriven<Barrio>
{
    private static final long serialVersionUID = -6659925652584240539L;


    private Barrio barrio = new Barrio();
    private List<Barrio> barrioList = new ArrayList<Barrio>();
    private BarrioDAO barrioDAO = new BarrioDAOImpl();


    @Override
    public Barrio getModel()
    {
        return barrio;
    }

    @Action
    (
        value="agregarBarrio",
        results={@Result(location="/registrar_barrios.jsp", type="redirect")}   
    )
    public String add()
    {
        barrioDAO.saveBarrio(barrio);
        return SUCCESS;
    }

    @Action
    (
        value="consultarBarrio",
        results={@Result(location="/registrar_barrios.jsp")}
    )
    public String list()
    {
        setBarrioList(barrioDAO.listBarrio());
        return SUCCESS;
    }

    public Barrio getBarrio() 
    {
        return barrio;
    }

    public void setBarrio(Barrio barrio)
    {
        this.barrio = barrio;
    }

    public List<Barrio> getBarrioList() 
    {
        return barrioList;
    }

    public void setBarrioList(List<Barrio> barrioList) 
    {
        this.barrioList = barrioList;
    }


}

6.- registrar_barrios.jsp 代码

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<s:form action="agregarBarrio">
    <s:textfield name="nombre" label="Nombre" />
    <s:submit />
</s:form>

<s:if test="consultarBarrio.size() > 0">
    <div class="content">
    <table class="barrioTable" cellpadding="5px">
        <tr class="even">
            <th>Nombre</th>
        </tr>
        <s:iterator value="consultarBarrio" status="barrio">
            <tr
                class="<s:if test="#barrio.odd == true ">odd</s:if><s:else>even</s:else>">
                <td><s:property value="nombre" /></td>
            </tr>
        </s:iterator>
    </table>
    </div>
</s:if>
</body>
</html>

给我一个帮助,我很感激你。祝你好运!!!

4

1 回答 1

0

错误

没有为与上下文路径 [] 关联的命名空间 [ /] 和操作名称 [ ] 映射的操作。registrar_barrios/ConsultarPatente

告诉您您的操作不可访问。这并不奇怪,因为您没有任何@Action(name="registrar_barrios").

您的操作是agregarBarrioconsultarBarrio

@Action(value="agregarBarrio", 
    results={@Result(location="/registrar_barrios.jsp", type="redirect")}   
)


@Action(value="consultarBarrio",
    results={@Result(location="/registrar_barrios.jsp")}
)

第一个结果也是redirect不按顺序使用。去掉它。

于 2015-05-08T15:16:21.447 回答