我正在使用 Struts 2 进行开发,我想在同一个操作中验证 2 个方法(代表一个用户)。第一个是检查角色的登录方法,user
(admin or normal user)
第二个是编辑user
:
public class UserAccountAction extends AppSupport {
public String login() {
if (getUsername().equals("admin") && getPassword().equals("admin")) {
session.put("username", getUsername());
return "adminSuccess";
} else if (getUsername().equals("user") && getPassword().equals("user")) {
session.put("username", getUsername());
return "userSuccess";
} else {
addActionError(getText("login.failedLoginCredential"));
return INPUT;
}
}
public String editProfile {
// ...
}
}
为此,我创建了 2 个 xml 文件: UserAccountAction-login-validation.xml
:
<validators>
<field name="login">
<field-validator type="required">
<message key="form.required" />
</field-validator>
</field>
<field name="password">
<field-validator type="required">
<message key="form.required" />
</field-validator>
</field>
</validators>
与和UserAccountAction-editProfile-validation.xml
相同。lastname
firstname
struts.xml
: _
<action name="login" method="login" class="com.project.action.UserAccountAction">
<result name="input">/jsp/login.jsp</result>
<result name="userSuccess" type="redirect">home.html</result>
<result name="adminSuccess" type="redirect">admin/home.html</result>
</action>
<action name="edit_account" method="editProfile" class="com.facilityrh.action.UserAccountAction">
<result name="input" type="tiles">userEditProfile</result>
<result name="success" type="redirect">account.html</result>
</action>
和login.jsp
:
<s:if test="hasActionErrors()">
<div class="error"><s:actionerror /></div>
</s:if>
<s:if test="hasActionMessages()">
<div class="message"><s:actionmessage /></div>
</s:if>
<s:form action="login" method="post">
<s:textfield name="login" key="login.login" /><br />
<s:password name="password" key="login.password" /><br />
<s:submit name="submit" key="login.submit" />
</s:form>
目前,在操作中,验证是基本的,但之后,我将使用数据库获取信息。
问题是当我提交表单时(login or editProfile)
,该方法没有执行,因为我没有错误,我在同一个 jsp 上返回(输入旁边没有所需的消息)
谢谢