最近在做一个Struts2+ibatis+mysql的项目,项目有一个页面要求,明细部分的是可以动态添加或删除的,比如:页面在初始化时,只有一条数据,当点击页面上的增加一行按钮,通过JS实现了 新增加一行,然后编辑这行的数据,点击提交按钮后,后台对新增行的数据进行验证,验证不通过后,会在原页面显示错误信息,并要求新增行的数据被保留,我的验证方法是写在Action中的,没有用验证框架。希望高人能给于指教,最好能够贴出相应的代码,比较急,在线等~~!!

解决方案 »

  1.   

    ajax 实现吧,可以在不跳转的情况下提示信息,楼主可以找下ajax的资料,不难的。
      

  2.   

    用这个吧,比较简单,实现前台局部刷新,dwr也可以很简单
      

  3.   


    能说的明白点么,因为以前没有接触过AJAX,还有使用AJAX的话,会走后台的验证么?我是小白,还希望各位大大能够讲解的明白点,谢谢了
      

  4.   

    没有的话怎么可能,IFRAME也满足不了你的要求.
    AJAX 不是那么难的.用JS新增一行会了吧.那就从提交按钮开始,button ,==> onclick=func() 定义一个JS 函数 func会了吧.
    然后就传值 到ACTION.这个action要返回 NONE 就是不跳转页面.
    function xhr() {
    var xhr;
    try {
    if (window.ActiveXObject) {
    for ( var i = 8; i; i--) {
    try {
    if (i == 2) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
    xhr = new ActiveXObject("Msxml2.XMLHTTP." + i + ".0");
    // xhr.setRequestHeader("Content-Type","text/xml");
    xhr.setRequestHeader("charset", "UTF-8");
    }
    break;
    } catch (e) {
    xhr = false;
    }
    }
    } else if (window.XMLHttpRequest) {
    xhr = new XMLHttpRequest();
    if (xhr.overrideMimeType) {
    xhr.overrideMimeType('text/xml');
    }
    }
    } catch (e) {
    xhr = false;
    alert("您的浏览器不支持ajax");
    }
    return xhr;
    }
    function Ajax(callBackFunc, method, url, async, data, eFunc) {
    var req = xhr();
    if (req) {
    req.onreadystatechange = function() {
    if (req.readyState == 4 && req.status == 200) {
    if (callBackFunc) {
    callBackFunc(req);
    }
    } else {
    if (req.readyState == 4 && req.readyState > 200) {
    if (eFunc) {
    eFunc(req);
    }
    }
    }
    if (req.readyState == 4) {
    req.onreadystatechange = {};
    }
    };
    method = method.toUpperCase();
    req.open(method, url, async);
    if (method == "POST") {
    req.setRequestHeader("Content-type",
    "application/x-www-form-urlencoded");
    }
    if (data) {
    req.send(data);
    } else {
    req.send(null);
    }
    }
    }
    这是我的方法.把这两个带上.在func里这样调用:
    var url = "struts2.action?param1="+param1;  你的action的URL 
    url=encodeURI(url);   编码一次不会乱码.
    var data=null; 或者在这里添加传递的参数.
    Ajax(parseSend, 'POST', url, null, data, null);回调函数.
    function parseSend(xmlhttp) {
    if (xmlhttp.responseText) {
    验证成功了.进行一些操作.
    } else {
    验证失败了,你可以 在这里写出错时信息显示在哪,想写什么都行.
    }
    }
      

  5.   

    要求在后台验证前天还要无刷新,那就只有ajax了,dwr,jquery都可以
      

  6.   

    也可以位输入域的value属性设置值,用OGNL表达式。