我最近做了一个struts2的项目,但在保存数据的时候一直在报数据类型出错,已经试过很多种方法都不能解决,上代码吧,这是配置文件
struts.messages.error.uploading=文件上传错误!
struts.messages.error.file.too.large=上传的文件超过了限制的长度!
struts.messages.error.content.type.not.allowed=不允许上传这种类型的文件!action.message.error.system.error=系统错误!
url.retrun.web=toThisWeb
url.return.login.web=toLoginWeb
error.system=系统错误!
xwork.default.invalid.fieldvalue=请输入数值. 
action.common.error.nn=不能为空!
action.common.error.num.length=数值范围:${min} - ${max} !
action.common.error.float.length=数值范围:${minInclusive} - ${maxInclusive}
action.common.error.string.length=最大长度为: ${maxLength} !
action.common.error.date=格式: 2009-1-12(英文状态下输入)报的数请输入数值的错误。我有三个数据表,是表关联的为user表,manger表(管理员表),noteInfo表(记录表),其中noteInfo表中的UserId和AdminId分别对应其他两表中的UserId和mangerId,上代码:<hibernate-mapping>
    <class name="org.langwei.struts2.persistence.entity.NoteInfo" table="note_info" catalog="wenjian_dev">
        <id name="noteId" type="java.lang.Integer">
            <column name="noteId" />
            <generator class="native" />
        </id>
   
       <many-to-one name="manager" class="org.langwei.struts2.persistence.entity.Manager" fetch="select">
            <column name="adminId" not-null="true" />
        </many-to-one>
        <many-to-one name="userInfo" class="org.langwei.struts2.persistence.entity.UserInfo" fetch="select">
            <column name="userId" not-null="true" />
        </many-to-one>
    </one-to-many>
<property name="noteContent" type="java.lang.String">
            <column name="noteContent" />
        </property>
        <property name="endTime" type="java.lang.String">
            <column name="endTime" />
        </property>
    </class>
</hibernate-mapping>[/code]
<?xml version="1.0" encoding="utf-8"?>    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.langwei.struts2.persistence.entity.Manager" table="manager">
        <id name="managerId" type="java.lang.Integer">
            <column name="MANAGER_ID" />
            <generator class="native" />
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" />
        </property>
        <property name="password" type="java.lang.String">
            <column name="PASSWORD" />
        </property>
        <property name="truename" type="java.lang.String">
            <column name="TRUENAME" />
        </property>
         <property name="nameAlphabet">
         <column name="NAME_ALPHABET"/>
        </property>
        <property name="sex" type="java.lang.String">
            <column name="SEX" />
        </property>
        <property name="birthday" type="java.util.Date">
            <column name="BIRTHDAY" />
        </property>
        <many-to-one name="department" column="DEPARTMENT_ID" 
          class="org.langwei.struts2.persistence.entity.Department" lazy="false" />
        <property name="officePhone" type="java.lang.String">
            <column name="OFFICE_PHONE" />
        </property>
        <property name="mobile" type="java.lang.String">
            <column name="MOBILE" />
        </property>
        <property name="homePhone" type="java.lang.String">
            <column name="HOME_PHONE" />
        </property>
        <property name="email" type="java.lang.String">
            <column name="EMAIL" />
        </property>
        <property name="jhFlag" type="java.lang.String" insert="false" update="false">
            <column name="JH_FLAG" />
        </property>
        <property name="creatDate" type="java.util.Date" update="false">
            <column name="CREAT_DATE" />
        </property>
        <set name="touSus" inverse="false" lazy="true" cascade="save-update" >
            <key>
                <column name="MANAGER_ID" />
            </key>
            <one-to-many class="org.langwei.struts2.persistence.entity.TouSu" />
        </set>
        <set name="otherActions" inverse="true" lazy="true" cascade="delete">
            <key>
                <column name="MANAGER_ID" />
            </key>
            <one-to-many class="org.langwei.struts2.persistence.entity.OtherAction" />
        </set>
        <set name="managerRoles" inverse="true" lazy="true" cascade="delete">
            <key>
                <column name="MANAGER_ID"/>
            </key>
            <one-to-many class="org.langwei.struts2.persistence.entity.ManagerRole" />
        </set>
    </class>
</hibernate-mapping>
action:package org.langwei.struts2.action.housebase;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;import javax.servlet.http.HttpServletRequest;import net.sf.cglib.core.Converter;import org.hibernate.Session;
import org.langwei.struts2.action.BaseAction;
import org.langwei.struts2.persistence.entity.AdminInfo;
import org.langwei.struts2.persistence.entity.Manager;
import org.langwei.struts2.persistence.entity.NoteInfo;
import org.langwei.struts2.persistence.entity.UserInfo;
import org.langwei.struts2.persistence.service.housebase.ChartService;/**
 * @author Administrator
 *
 */
public class NoteAction extends BaseAction {
/**
 * 
 */
private static final long serialVersionUID = -1751259193422062630L;
/**
 * 
 */
// private Session session=null;
private ChartService chartService;
private HttpServletRequest request;
private NoteInfo noteInfo;
private UserInfo userInfo;
private Manager manager;
private List<NoteInfo> noteInfoList;
private List<UserInfo> userList;

public NoteInfo getNoteInfo() {
return noteInfo;
} public void setNoteInfo(NoteInfo noteInfo) {
this.noteInfo = noteInfo;
} public HttpServletRequest getRequest() {
return request;
}public void setRequest(HttpServletRequest request) {
this.request = request;
} public ChartService getChartService() {
return chartService;
}public void setChartService(ChartService chartService) {
this.chartService = chartService;
} public String getNoteInfos(){
System.out.println("执行数据库*******************"+chartService);


try{
noteInfoList = chartService.findNote();
if(noteInfoList != null){
for(int i=0;i<noteInfoList.size();i++){
NoteInfo noteInfo = noteInfoList.get(i);
System.out.println("name="+noteInfo.getNoteContent());
System.out.println(noteInfo.getAdminId());
System.out.println(noteInfo.getUserId());
System.out.println(noteInfo.getEndTime());
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return SUCCESS;
} @Override
public String execute() throws Exception {
// TODO 自动生成方法存根
System.out.println("*********验证**********");
return SUCCESS;
} public List<NoteInfo> getNoteInfoList() {
return noteInfoList;
} public void setNoteInfoList(List<NoteInfo> noteInfoList) {
this.noteInfoList = noteInfoList;
} /**
 * 
 * 转向咨询页面
 */
public String saveNoteWeb(){
System.out.println("**********转向咨询页面**********");
return returnStr;
}

/**
 * 
 * 保存咨询记录
 * */
public String saveNote(){
System.out.println("***********保存开始************"); try {

this.chartService.saveNote(noteInfo);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} return SUCCESS;
}
public class ChartSpringDao extends HibernateDaoSupport implements IChatDao  {   private Session session = null;
@SuppressWarnings("unused")
private Transaction transaction = null;

public ChartSpringDao(){
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
session = sessionFactory.openSession();
}
/* (非 Javadoc)
 * @see org.langwei.struts2.persistence.dao.housebase.IchatDao#saveNote()
 */
public void saveNote(NoteInfo noteInfo) {
// TODO 自动生成方法存根
this.getHibernateTemplate().save(noteInfo);
} @SuppressWarnings("unchecked")
public List<NoteInfo> findNoteByid(int noteId) {
// TODO 自动生成方法存根

return (List<NoteInfo>) this.getHibernateTemplate().get(NoteInfo.class, noteId);

}
@SuppressWarnings("unchecked")
public List<NoteInfo> findAllNote(){
return this.getHibernateTemplate().find("from NoteInfo");
}

public List<NoteInfo> findNote(){
int uid=1;
int aid=1;

String hql ="from NoteInfo )";
Query query = this.session.createQuery(hql);
List list = query.list();
return list;
}
//用户信息显示
private List<UserInfo> userList;
public List<UserInfo> getUserList() {
return userList;
}
public void setUserList(List<UserInfo> userList) {
this.userList = userList;
}
public List<UserInfo> findUserInfo() {
// TODO 自动生成方法存根
String hql="from UserInfo where UserState='0'";
Query query = this.session.createQuery(hql);
List list=query.list();
return list;
}

// public List<AdminInfo> findAdminInfo(){
//
//
// }
// //Ajax刷新用户信息列表和咨询窗体
// public void  useAjax(){
//
// }

}大家帮帮忙呀,小弟就指望这个活命了,对了还有就是在读取noteInfo里面内容的时候userId和AdminId取不到值,先谢谢啦

解决方案 »

  1.   

    看楼主的代码看得很费劲,不过还是找出了一些头绪,楼主提到的第一个问题应该是传入的数据类型和数据库类型不匹配导致,userId和AdminId取不到的问题要看看chartService.findNote()这个方法里面是不是把对应的值传入到NoteInfo对象里面了。
      

  2.   

    控制台不报错,我再配置文件里面自定义的一个错误就是:xwork.default.invalid.fieldvalue。
    大侠帮帮忙,我头都大了,硬是找不出问题所在。
      

  3.   

    把你最上面的那个配置文件中的中文通过 native2ascii命令 全改为ascii码试试
      

  4.   

    最需要的东西你没贴出来。这是典型的Struts2数据转换用的拦截器提供的提示,因此你的action方法恐怕是没有调用的。检查一下哪个数值型的字段,在页面里面忘了加上吧。