在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路径有关吗?我搜索了一些关于网址路径的信息,并对此更加困惑。
答案 0 :(得分:0)
让我回答一下,感觉很冷.....我在s:action标签中添加了namespace =“/”。它成功了!只是想知道为什么s:action没有在XML文件中的包中添加命名空间。