首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将“null”值从jsp页接收到Struts2操作中

将“null”值从jsp页接收到Struts2操作中
EN

Stack Overflow用户
提问于 2011-02-28 23:48:44
回答 2查看 3.3K关注 0票数 3

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

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

代码语言:javascript
复制
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页面:

代码语言:javascript
复制
<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验证器的一部分:

代码语言: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;
}
EN

回答 2

Stack Overflow用户

发布于 2011-05-23 22:55:47

您的jsp页面中可能有多个具有名称usename的emement,而不是使用document.getElementsByName来获取文本框值尝试使用表单引用document.formid.username.value来获取

还可以尝试在用户名文本框声明中设置空值,如<s:textfield .... value="" />

票数 1
EN

Stack Overflow用户

发布于 2011-03-05 03:57:29

在LoginAction类中,您需要拥有要从jsp页面接收的属性的getter和setter方法。尝试向其添加getter和setter。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5144169

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档