Struts 2没有Struts标签

时间:2015-08-28 02:02:55

标签: javascript java jquery jsp struts2

我正在尝试使用Struts 2创建一个登录表单。为此我在下面创建了一个jsp页面

<form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()">

    <table class="tblLogin">
        <tr><th colspan="2">Log in</th></tr>
        <tr>
            <td class="labels">Username:</td>
            <td><input type="text" id="txtUsername" maxlength="10"></td>
        </tr>
        <tr>
            <td class="labels">Password:</td>
            <td><input type="password" id="txtPassword" maxlength="16"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in">
            </td>
        </tr>
    </table>
</form>

在页面中,我使用Javascript验证了页面。我已经用getter和setter创建了一个action类,还有一个返回SUCCESS的execute方法。当我搜索互联网时,发现所有示例都使用struts标签。 如何使用常规HTML从struts连接并执行validate方法。否则,使用Struts 2验证和提交表单的方法是什么。 现在我的问题是,即使我提供了错误的用户名和密码表单提交。

2 个答案:

答案 0 :(得分:1)

对于服务器端验证:

您必须在动作类中扩展ActionSupport。然后,覆盖validate()方法。这是一个例子:

@Override
    public void validate() {
       if (this.username == null || this.username.isEmpty()) {
            addFieldError("username", "Username is required");
        }
       if (this.password == null || this.password.isEmpty()) {
            addFieldError("password", "Password is required");
        }
    }

如果这对您有用,您可以在validate()方法

上添加更多语句

此外,您可以使用ActionSuport getText()方法获取包含您要显示的错误消息的字符串:

@Override
        public void validate() {
           if (this.username == null) {
                addFieldError("username", getText("err_username_req"));
            }
           ..... // same for password and other statements

        }

您所要做的就是将err_username_req作为属性包含在struts2资源文件中(例如,在您要保留字符串的文件中,例如,验证错误和内容),并且您需要执行此操作。我会很高兴:)。

答案 1 :(得分:0)

在常规HTML中,您缺少一些Struts2功能,例如xhtml主题。此主题允许显示操作错误以及输入字段。要验证输入字段,您需要将值作为参数传递给操作。提交表单时会创建操作实例。如果使用相同的名称将字段绑定到操作属性,则会更好。默认情况下,参数不仅在操作上下文中合并,而且还填充了操作实例。确保您的操作类扩展ActionSupport,因为调用validation方法需要它,并且具有验证错误的上下文。使用包含defaultStackvalidation拦截器的workflow拦截器。如果操作有验证错误,最后一个会阻止执行操作。

<form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()">

    <table class="tblLogin">
        <tr><th colspan="2">Log in</th></tr>
        <tr>
            <td class="labels">Username:</td>
            <td><input type="text" id="txtUsername" name="username" maxlength="10"></td>
        </tr>
        <tr>
            <td class="labels">Password:</td>
            <td><input type="password" id="txtPassword" name="password" maxlength="16"></td>
        </tr>
        <tr>
            <td colspan="2" align="center">
                <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in">
            </td>
        </tr>
    </table>
</form>