簡體   English   中英

從jsp頁面接收'null'值到Struts2 Action

[英]Recieving 'null' values from a jsp page into Struts2 Action

我正在使用Struts2 + JSP作為我的J2EE平台。 有時我從我的jsp頁面的struts文本字段中獲取null值為actions。 例如,在登錄頁面中,盡管驗證了我的表單並且阻止輸入無效數據(例如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>

一段javaScript驗證器:

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;
}

在jsp頁面中可能有多個emements具有name usename,而不是使用document.getElementsByName獲取文本框值,嘗試使用表單引用document.formid.username.value
並嘗試在用戶名文本框聲明中設置空值,如<s:textfield .... value="" />

在LoginAction類中,您需要為要從jsp頁面接收的屬性使用getter和setter方法。 嘗試添加getter和setter。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM