JSP Struts2验证问题

v9tzhpje  于 2024-01-04  发布在  其他
关注(0)|答案(1)|浏览(307)

我尝试使用Struts2 validations annotation验证表单,但它似乎不起作用,也没有在标签上显示所需的标记。下面是我的代码:

login.jsp

  1. <s:form action="/Login" validate = "true">
  2. <table>
  3. <tr>
  4. <td><s:label theme=”simple” required="true">Username :</s:label></td>
  5. <td><s:textfield name="userName" theme=”simple” /></td>
  6. </tr>
  7. <tr>
  8. <td><s:label theme=”simple” required="true">Password :</s:label></td>
  9. <td><s:textfield name="password" theme=”simple” /></td>
  10. </tr>
  11. <tr>
  12. <td><s:submit value="Login" /></td>
  13. </tr>
  14. </table>
  15. </s:form>

字符串

LoginAction.java

  1. public class LoginAction extends ActionSupport {
  2. private String userName;
  3. private String password;
  4. @Validations(requiredStrings={@RequiredStringValidator(type=ValidatorType.FIELD, message="User Name can ot be empty.", fieldName="userName")})
  5. public String getUserName() {
  6. return userName;
  7. }
  8. public void setUserName(String userName) {
  9. this.userName = userName;
  10. }
  11. @Validations(requiredStrings={@RequiredStringValidator(type=ValidatorType.FIELD, message="Password can ot be empty.", fieldName="password" )})
  12. public String getPassword() {
  13. return password;
  14. }
  15. public void setPassword(String password) {
  16. this.password = password;
  17. }
  18. public String execute()
  19. {
  20. return SUCCESS;
  21. }
  22. }

struts.xml

  1. <struts>
  2. <package name="demo" extends="struts-default">
  3. <action name="*" class="mypkg.action.{0}Action">
  4. <result name="success">/success.jsp</result>
  5. <result name="input">/index.jsp</result>
  6. </action>
  7. </package>
  8. </struts>


有人可以帮助和注意到,如果有什么问题,我的代码?

zazmityj

zazmityj1#

如果你使用Validations annotation,那么你应该把它放在action方法上。Validator annotation放在 setter 方法上。你还使用了validate = "true",这意味着客户端验证。确保你有JavaScript(在<s:head/>的帮助下)和主题,如xhtmlcss_xhtml应用到表单,使验证错误可见。即主题simple在这里不工作,从字段中删除它。
如果没有指定主题,那么Struts 2将默认使用xhtml主题。
推荐人:

相关问题