我想在jsp页面中验证我的文本字段。我使用struts。我的验证函数抛出错误,如下所述。
HTTP状态404 - 没有为操作SIS.Student.AddUser和。定义的结果 结果输入
这些是我的表格参数。
<s:form id="FormAddUser" name="FormAddUser" action="AddUser" method="post"
enctype="multipart/form-data" class="form-horizontal">
<s:textfield key="UserId" label="UserId" />
<s:textfield key="Name" label="Name" />
<s:textfield key="Address" label="Address" />
<s:textfield key="DOB" label="DOB" />
<s:password key="Password" label="Password" />
<s:textfield id="EmailId" key="EmailId" label="EmailId" />
<s:textfield id="Specialization" key="Specialization" label="Specialization" />
<s:file name="UserImage" id="UserImage" key="UserImage" label="Select a File to change photo" />
<s:submit label="Add" />
</s:form>
这是我的动作类中的验证函数:
public class AddUser extends ActionSupport implements ServletRequestAware
{
public void validate()
{
if (StringUtils.isEmpty(UserId)) {addFieldError("UserId", "UserId cannot be blank");}
if (StringUtils.isEmpty(Name)) {addFieldError("Name", "UserId cannot be blank");}
if (StringUtils.isEmpty(Address)) {addFieldError("Address", "UserId cannot be blank");}
if (StringUtils.isEmpty(DOB)) {addFieldError("DOB", "UserId cannot be blank");}
if (StringUtils.isEmpty(Password)) {addFieldError("Password", "UserId cannot be blank");}
if (StringUtils.isEmpty(EmailId)) {addFieldError("EmailId", "UserId cannot be blank");}
if (StringUtils.isEmpty(Specialization)) {addFieldError("Specialization", "UserId cannot be blank");}
}
这是我的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="studentInfo" extends="struts-default" namespace="/">
<action name="AddUser" class="SIS.Student.AddUser" method="execute">
<interceptor-ref name="fileUpload">
<param name="maximumSize">2097152</param>
<param name="allowedTypes">
image/png,image/gif,image/jpeg,image/pjpeg
</param>
</interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
<result name="success">/Index.jsp</result>
<result name="error">/Index.jsp</result>
<result name="input">/Index.jsp</result>
</action>
</package>
这是我得到的错误:
我做错了什么?我该怎么办?
答案 0 :(得分:-1)
首先, 你给了namespace =&#34; /&#34;,所以你不需要给&#34; /&#34;在
<result name="success">/Index.jsp</result>
如果你有namespace =&#34; /&#34; ,请将其更改为以下内容
<result name="success">Index.jsp</result>
检查这是否解决了您的问题。检查index.jsp是否有&#39; i&#39;或者&#39;我&#39;在第0个地址
其次,
从你的查询我无法推断你的程序是否运行良好..
你测试过以下的吗?
* in&#34; Class AddUser&#34;从validate方法中删除所有if条件并放置此
public void validate()
{
System.out.println("in validate method");
}
并且在例外方法中
public String execute()
{
System.out.println("in execute method");
return SUCCESS; // assuming you are extending ActionSupport class & using default return types
}
预期输出
在验证方法中
在执行方法中
显示 Index.jsp
如果您已完成此测试,请告诉我结果。如果以上工作正常,那么我们需要深入了解其他可能性。
EDITED
在验证上述场景后,检查您从actionMethod返回的值:执行并验证来自action方法的返回字符串是否存在于
例如:
public String execute()
{
return "hello";
}
并修改如下,删除&#34;错误&#34;和&#34;输入&#34;
<action name="AddUser" class="SIS.Student.AddUser" method="execute">
<!-- modified success to hello do debug with / and without /-->
<result name="hello">index.jsp</result>
</action>