Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接收';空';值从jsp页面转换为Struts2操作_Java_Jsp_Struts2_Null - Fatal编程技术网

Java 接收';空';值从jsp页面转换为Struts2操作

Java 接收';空';值从jsp页面转换为Struts2操作,java,jsp,struts2,null,Java,Jsp,Struts2,Null,我使用Struts2+JSP作为我的J2EE平台。有时,我会将jsp页面的struts文本字段中的空值输入到操作中。例如,在登录页面中,尽管验证了我的表单并防止输入无效数据(如null或blank),但用户名字段的值仍然为null,而不是实际输入的值。 有人遇到过这样的场合吗 下面是发生此错误的一段代码: public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1

我使用Struts2+JSP作为我的J2EE平台。有时,我会将jsp页面的struts文本字段中的空值输入到操作中。例如,在登录页面中,尽管验证了我的表单并防止输入无效数据(如null或blank),但用户名字段的值仍然为null,而不是实际输入的值。 有人遇到过这样的场合吗

下面是发生此错误的一段代码:

public class LoginAction extends ActionSupport {

private static final long serialVersionUID = 1L;
private String username;
private String password;

@SuppressWarnings({ "unchecked", "deprecation", "static-access" })
public String execute() {

    try {
        CacheLogger.getInstance().AddEnteredUsernameEvent(username);
        UserSession userSession = UserSession.getInstance();

        userSession.getPlayerById(username.toLowerCase()); //THE ONE WHERE I GET NULL VALUE (sometimes)
相应的JSP页面:

<s:form action="login.action" method="post" onsubmit="document.getElementsByName('password').item(0).value=sha1Hash(document.getElementsByName('password').item(0).value);return validateLogin()" style="text-align:center;">
<s:textfield name="username" maxlength="50" label="نام کاربری" tabindex="1" onfocus="hideMessage()" cssClass="loginTextField" />
<s:password  name="password" maxlength="255" label="رمز عبور" tabindex="2" onfocus="hideMessage()" cssClass="loginTextField"/>
<input type="submit" name="Submit" value="ورود" class="submit" tabindex=3 onclick="javascript:$('#exception').css('display','none');$('#actionmessage').css('display','none');"/>
</s:form>

在LoginAction类中,对于希望从jsp页面接收的属性,需要使用getter和setter方法。尝试向其中添加getter和setter。

jsp页面中可能有多个元素的名称为usename,而不是使用
文档。getElementsByName
要获取文本框值,请尝试使用表单引用
文档。formid.username.value

还可以尝试在用户名文本框声明中设置空值,如

您的操作是否有
getUsername()
方法?请显示一些代码和错误消息!是的->公共字符串getUsername(){return username;},我将这段代码放在第一篇文章中。我编辑了第一篇文章,并添加了JSP和JavaScript验证程序。我在javaScript函数中验证Struts表单,正如您在上面看到的那样。即使用户禁用JavaScript,发送的数据也将为空,而不是空。@SJ.Jafari您有解决方案吗problem@gnanz事实上,没有。这有时会发生!我只需要检查传入值是否不为null。实际上,其中有getter和setter。没有它们,struts就不工作!正如我前面提到的,这个问题偶尔会发生。@SJ.Jafari您有解决这个问题的方法吗
function validateLogin()
{   
    var username = document.getElementsByName('username').item(0).value;
    var password = document.getElementsByName('password').item(0).value;
    var input=/^[a-zA-Z]+[a-zA-Z0-9]+[a-zA-Z0-9]+\d*[a-zA-Z0-9]*$/;

    if(!username)
    {
        showErrorMessage('خطا! نام کاربری را وارد نکرده اید',26);
        return false;
    }
    else
    if(!password)
    {
        showErrorMessage('خطا! رمز عبور را وارد نکرده اید',25);
        return false;
    }
    else
    if(!input.test(username))
    {
        showErrorMessage('خطا! در قسمت "معین خر است" کاراکتر غیر مجاز وارد کرده اید',49);
        return false;
    }
    return true;
}