我正在尝试使用Struts2验证注释来验证表单,但它似乎不起作用,并且不会在标签上显示所需的标记。 这是我的代码:
login.jsp
:
<s:form action="/Login" validate = "true">
<table>
<tr>
<td><s:label theme=”simple” required="true">Username :</s:label></td>
<td><s:textfield name="userName" theme=”simple” /></td>
</tr>
<tr>
<td><s:label theme=”simple” required="true">Password :</s:label></td>
<td><s:textfield name="password" theme=”simple” /></td>
</tr>
<tr>
<td><s:submit value="Login" /></td>
</tr>
</table>
</s:form>
LoginAction.java
public class LoginAction extends ActionSupport {
private String userName;
private String password;
@Validations(requiredStrings={@RequiredStringValidator(type=ValidatorType.FIELD, message="User Name can ot be empty.", fieldName="userName")})
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Validations(requiredStrings={@RequiredStringValidator(type=ValidatorType.FIELD, message="Password can ot be empty.", fieldName="password" )})
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String execute()
{
return SUCCESS;
}
}
struts.xml
<struts>
<package name="demo" extends="struts-default">
<action name="*" class="mypkg.action.{0}Action">
<result name="success">/success.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
如果我的代码有问题,有人可以帮忙并注意吗?
答案 0 :(得分:0)
如果使用Validations
注释,则应将其放在操作方法上。验证器注释放在 setter 方法上。您还使用validate = "true"
,这意味着客户端验证。确保您拥有javascript(在<s:head/>
的帮助下)并将xhtml
或css_xhtml
等主题应用于表单,以使验证错误可见。即主题simple
在此无效,请从字段中删除。
如果您没有指定主题,那么Struts 2将使用xhtml主题 默认情况下。
Referrences: