为什么s:每次都没有执行动作?

时间:2016-06-03 03:22:44

标签: java jsp struts2

在JSP页面中,我使用s:action来调用操作。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags"%>
<!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=UTF-8">
<title>online shop market</title>
</head>
<body>
    <h1>welcome</h1>
    <s:action name="listallAction" executeResult="true" />   
</body>
</html>

这是我的struts.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <constant name="struts.devMode" value="true" />
    <package name="default" namespace="/" extends="struts-default">

        <action name="loginAction" class="action.CustomerAction" method="login">
        <result name="SUCCESSLOGIN">/welcome.jsp</result>
        </action>

        <action name="listallAction" class="action.ItemAction" method="listall">
        <result name="SUCCESSLISTALL">/allitems.jsp</result>
        </action>
    </package>
</struts>

为了便于理解,我在这里保存了一些代码。 我的问题是:在第一种情况下,当它正在执行loginAction时,在成功登录后,它将映射到此页面并调用listallAction。 listallAction已成功实施,内容包含在此页面中。我看到网址为http://localhost:8080/XXProject/loginAction。在第二种情况下,在启动tomcat之后,在浏览器中,我只调用了welcome.jsp页面,网址是http://localhost:8080/XXProject/welcome.jsp。这一次,它没有执行s:action!服务器告诉我:动作名称listallAction没有映射动作。 - [未知位置]。这个问题与url路径有关吗?我搜索了一些关于网址路径的信息,并对此更加困惑。

1 个答案:

答案 0 :(得分:0)

让我回答一下,感觉很冷.....我在s:action标签中添加了namespace =“/”。它成功了!只是想知道为什么s:action没有在XML文件中的包中添加命名空间。