jsp中没有显示动作错误

问题描述:

我开发了一个需要给出用户详细信息的jsp页面。这里是JSPjsp中没有显示动作错误

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib uri="/struts-tags" prefix="s" %> 

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>Register</title> 
<link rel="stylesheet" type="text/css" href="styles.css" /> 
</head> 

<body>  
<div id="form_container" align="center"> 

     <div class="errorMessages" > 
      <s:actionerror/> 
     </div> 


    <s:if test="hasActionMessages()" >      <!-- Print action messages if any --> 
     <div class="successMessages" > 
      <s:actionmessage/> 
     </div> 
    </s:if> 

    <s:form action="registerOphthalmologist" method="post"> 

     <s:hidden  key="role"   label="role" value="O"  /> 
     <s:textfield key="username"  label="Choose UserName" required="true"/> 
     <s:password  key="password"  label="Choose Password" required="true"/> 

     <s:textfield key="givenName"  label="Name" required="true"/> 
     <s:textfield key="surname"  label="Surname" required="true"/> 
     <s:textfield key="age"   label="Age"  required="true"  value=""/> 
     <s:select  key="gender"  label="Gender" 
         list="#{'M':'Male','F':'Female'}" 
         required="true"/> 

     <s:textfield key="contactNumber"  name="contactNumber" label="Contact Number" required="true"/> 
     <s:textfield key="email"    name="email"   label="email"   required="true"/> 
     <s:textfield key="city"    name="city"    label="City"   required="true"/> 
     <s:textfield key="district"   name="district"   label="District"  required="true"/> 
     <s:textfield key="state"    name="state"   label="State"   required="true"/> 
     <s:textfield key="country"   name="country"   label="country"   required="true"/> 
     <s:textfield key="postalCode"  name="postalCode"  label="Postal Code"  required="true"/> 

     <s:textfield key="degree"   label="Qualification"   required="true"/> 
     <s:textfield key="university"  label="University"    required="true"  value=""/> 
     <s:textfield key="hospitalName"  label="Hospital Name"   required="true"/> 
     <s:textfield key="experience"  label="Years of Experience"  required="true"  value=""/> 

     <s:checkbox  key="checkMe"  fieldValue="true"  label="Agree to terms & Conditions"/> 
     <s:submit  value="Register" align="center"/> 

    </s:form> 
</div> 
<div class="footer"> 
    <p align="center">Designed and maintained by SSSIHL</p> 
</div> 

这正好以下操作文件。

package com.ActionClasses; 

import com.Daos.RegisterDao; 
import com.Daos.UsernameAvailabilty; 
import com.Beans.RegisterBeans; 
import com.mysql.jdbc.StringUtils; 
import com.opensymphony.xwork2.Action; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 

@SuppressWarnings("serial") 
public class RegisterAction extends ActionSupport implements Action,ModelDriven<RegisterBeans> 
{ 

RegisterBeans registerBeans = new RegisterBeans(); 

public void validate(){ 
    System.out.println("came here "+ registerBeans.getUsername()); 
    if (StringUtils.isNullOrEmpty(registerBeans.getUsername())) 
     { 
     System.out.println("username not found "+ registerBeans.getUsername()); 
      addFieldError("username","Username is required"); 
      return; 
     } 
    /*boolean Available = UsernameAvailabilty.check(registerBeans.getUsername()); 

    if(!Available){ 
     System.out.println("username not available "+ registerBeans.getUsername()); 
     addFieldError("username","Username is not available"); 
     return; 
    } 
*/ 
} 
public String execute() throws Exception{ 

    if(RegisterDao.save(registerBeans) == 4) /*For every registration 4 tables will be filled in database*/ 
     return SUCCESS; 

    return ERROR; 
} 
@Override 
public RegisterBeans getModel() { 
    return registerBeans; 
} 

}

RegisterBeans.java包含所有getter和setter。当我在jsp中没有给出任何用户名时,我可以在控制台中看到“来到这里”的消息。但是,当控制回到register.jsp时,错误消息不会显示在屏幕上。我做了什么错误。此

我struts.xml的代码是

<action name="register*" class="com.ActionClasses.RegisterAction"> 
     <result name="success"> /login.jsp    </result> 
     <result name="input"> /register{1}.jsp  </result> 
    </action> 
+0

您正在设置FieldError中的错误消息并使用ActionError进行显示。更改它。或者在addActionError消息中设置你的错误。 – 2014-08-28 08:41:35

+0

我最初尝试过,因为这不是帮助我,我把它改为现场错误。即使这不起作用。 – Pawan 2014-08-28 08:52:41

+1

停止使用modeldriven,并且一切都应该没问题。 – 2014-08-28 08:54:59

如果您正在使用simple主题,外地的错误不会自动呈现。

你需要自己做:

<s:textfield key="username" label="Choose UserName" required="true"/> 
<s:fielderror fieldName="username" /> 

另外请注意,所需=“真”应要求=如果您使用的是最新的Struts2的版本“必需的”。

+0

如果我这样做,我得到一个错误,“未定义的属性名称fieldName”。并且required =“true”不会给我任何错误或警告。我正在使用struts2.3.16.3 – Pawan 2014-08-28 08:49:50

+0

1)不可能,你有一些错字或正在做一些不在这里写的东西(它的工作原理,它也在[docs too]上(http://struts.apache.org/release/) 2.3.x/docs/fielderror.html); 2)需要HTML5是必需的,应该是必需的=“required”。在旧的struts2版本中,required是一个struts2属性,它是required =“true”。现在它需要标签。 – 2014-08-28 09:06:15

+0

我粘贴完整的jsp和动作文件 – Pawan 2014-08-28 09:15:49