客户端校验不能弹出对话框,显示的错误信息总是在表单元素的上方,起码在旁边看着还顺眼些。如果使用了<s:head/>来显示错误信息,那么连同表单元素的标签名都成了红色了,真是奇丑无比,真不知这些设计框架的人怎么想的,这太简陋了。用起来还费事,有没有替代品,实现起来像asp.net那样方便美观的。

解决方案 »

  1.   

    从来不用这东西,那等struts3出来后,你是不是继续再花时间去学3的校验框架,那自然也要学它的自带标签了,那等4出来呢?
      

  2.   

    <s:form theme="simple">这是取消错误显示的
    <s:fielderror/>这句话可以把所有错误显示出来
      

  3.   

    建议不用struts2客户端校验,很低级的。用struts2服务器端校验就好。
      

  4.   

    客户端效验你还是用JS,服务器端效验用Struts来做
    如果用户直接省去后缀,那么直接跳转到服务器端,所以服务器端的效验才是你程序的最后一道管卡,应该着重
      

  5.   

    用js又要自己写,费事。asp.net在这方面的确比较省心,在属性窗口里写个判断规则和错误信息就行了。jsp发展那么多年,也就出了个jsf,据说还有很多不完善的地方。
      

  6.   

    哥们,这样做是不会在每个元素顶部显示错误信息了,而是统一显示在你定义fielderror标签的地方,是整齐了一些,不过我的元素的label也显示不出来了。
    <s:form id="userForm" action="/user/register.do" theme="simple" validate="false">
    <table width="200" border="0">
    <tbody>
    <tr>
    <td>
    <s:textfield name="userName"  label="User Name"></s:textfield>
    </td>
    </tr>
    <tr>
    <td>
    <s:password name="password" label="Password" />
    </td>
    </tr>
    <tr>
    <td>
    <s:password label="Confirm Password" name="cfmPassord" />
    </td>
    </tr>
    <tr>
    <td>
    <s:textfield name="nickname" label="Nickname" />
    </td>
    </tr>
    <tr>
    <td>
    <s:textfield name="email" label="Email" />
    </td>
    </tr>
    <tr>
    <td>
    <s:select label="City" name="cityId" list="cities" listKey="id"
    listValue="cityName" />
    </td>
    </tr>
    <tr>
    <td>
    <s:textarea name="description" rows="10" cols="20"
    label="Self-Description" />
    </td>
    </tr>
    <tr>
    <td>
    &nbsp;
    </td>
    </tr>
    <tr>
    <td>
    &nbsp
    <s:submit label="Submit User Info" />
    </td>
    </tr>
    <tr>
    <td>
    &nbsp;
    </td>
    </tr>
    <tr>
    <td>
    &nbsp;
    </td>
    </tr>
    </tbody>
    </table>
    </s:form>