首先,我使用简单的主题,但即使没有它,也会发生相同的行为(页面格式除外)。当我提交表单时,名称字段为空并重定向到 register.jsp 而不显示验证错误。检查日志或使用调试器后,似乎验证工作正常并且服务器日志消息按预期写入。我将发布通用代码。
struts.properties
struts.ui.theme=simple
我的行动
private User user = new User() // getter and setter
@Inject
transient UserDAO userDAO;
@Override
public User getModel() {
return user;
}
public void validate(){
LOG.debug("NAME VALIDATION " + user.getName());
if("".equals(user.getName())){
addFieldError("user.name", "Name can't be empty");
LOG.debug("Validation Error on name");
}
}
使用调试器检查,验证方法正在工作并写入日志。
struts.xml
<package name="users" extends="struts-default">
<action name="registerUser" method="prepareRegister" class="com.test.MyAction">
<result name="success">/register.jsp</result>
</action>
<action name="saveOrUpdateUser" method="saveOrUpdate" class="com.test.MyAction">
<result name="input" type="redirect">registerUser</result>
<result name="success" type="redirect">listUser</result>
</action>
</package>
注册.jsp
<td>
<s:textfield id = "userName"
label = "User Name"
name = "user.name" />
</td>
<s:fielderror fieldName = "user.name" />
随时问我澄清。我对 struts 2 很陌生,我尝试了 struts 2 文档验证方式,并检查了其他教程。我不知道我是否遗漏了一些东西,或者我有一些我没有注意到的错误配置,因为逻辑正在运行而视图部分(jsp)没有。提前致谢。