我已经完成了登录表单的验证。工作正常,但是输入正确的
username
和password
后,没有执行任何操作,登录成功后也打不开JSP页面。
这是我的登录表格:
<s:form validate="true" action="login">
<br>
<table class="bg" cellspacing="0">
<tr class="logindiv">
<td >
</td>`enter code here`
<td>
Sign In
</td>
</tr>
<tr>
<td>
<s:textfield label="Username" name="obj2.user" cssStyle="height:25px; width:150px;"></s:textfield>
</td>
</tr>
<tr>
<td>
<s:password label="Password" name="obj2.pass" cssStyle="height:25px;width:150px;"></s:password>
</td>
</tr>
<tr>
<td>
<center>
<s:submit value="Login" cssClass="login"></s:submit>
</center>
</td>
</tr>
</table>
</s:form>
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>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<action name="login" class="IndianUserActionModule.indianAction" method="Login">
<result name="input">index.jsp</result>
<result name="success">IndianHome.jsp</result>
<result name="fail">index.jsp</result>
</action>
</package>
</struts>
在 struts 配置中,您将操作映射到包配置的特定命名空间。但在 JSP 表单中,您将操作映射到 default 命名空间。这些是不同的命名空间,并且您的操作配置在 default 命名空间中找不到,因此失败。您应该使用
s:form
标签的命名空间属性来指定用于映射操作的命名空间。例如
<s:form validate="true" namespace="/" action="login">
有一个示例可以让您更好地理解命名空间概念。