java-客户端验证无法使用validate()

我在validate()方法中进行验证.

public void validate(){
    if(continent.equals("-1")){
        HttpServletRequest request=ServletActionContext.getRequest();  
        HttpSession session=request.getSession();  
        String s=(String)session.getAttribute("operation");
        if(s.equals("edit"))
                edit();
        else if(s.equals("add"))
                add();
        addFieldError( "Continent", "Continent must be selected");
    }
}

并在jsp(view)中添加了表单属性validate = true

<s:form action="add" name="aaa" cssClass="yy" method="post" validate="true">
        <s:textfield name="Code" label="Code" readonly="false" cssClass="defaultTextBox"/>
        <s:textfield name="Name" label="Name" cssClass="defaultTextBox"/>
        <s:select name="Continent" label="Continent" headerKey="-1" headerValue="Select" list="continentlist" cssClass="defaultTextBox"/>
        <s:textfield name="IndepYear" label="Independance Year" cssClass="defaultTextBox" />
        <s:submit value="Save" cssClass="login login-submit" theme="simple"/>
</s:form>

但是只有服务器端验证有效.我的问题是->是否不可能使用validate()方法添加客户端验证?

解决方法:

在Struts 2中,Client Side Validation的含义不同,并且完全取决于您使用的theme的类型.

>使用XHTML(默认)和CSS XHTML,您可以使用

> Pure JavaScript Client Side Validation

那完全是基于Java的客户端,并且不与服务器通信.
>使用AJAX主题,您可以运行

> AJAX Client Side Validation

它将与服务器联系,运行整个验证堆栈,并(为了回答您的问题)也运行您的validate()方法.

我个人更喜欢使用SIMPLE主题,完全由我自己处理HTML,CSS和JavaScript.

由于服务器端验证是强制性的,因此客户端验证仅被认为是多余的,有利于使页面更加用户友好,并减少高用户环境中的网络流量(您阻止了不成功-但合法-要求通过电线之前:)

考虑在jQuery上使用HTML5类型和后备功能,尤其是针对移动设备的情况.

上一篇:javascript-文件上传|没有页面刷新| struts2 |没有闪光灯


下一篇:java-无法显示ActionError