【问题标题】:Recieving 'null' values from a jsp page into Struts2 Action从jsp页面接收'null'值到Struts2 Action
【发布时间】:2011-02-28 15:48:44
【问题描述】:

我使用 Struts2+JSP 作为我的 J2EE 平台。有时我会从我的 jsp 页面的 struts 文本字段中获取空值到操作中。例如,在登录页面中,尽管验证了我的表单并防止输入无效数据(例如 null 或空白),但我仍然得到用户名字段的 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 Validator:

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

【问题讨论】:

  • 你的action有getUsername()方法吗?请显示一些代码和错误信息!
  • 是的 -> public String getUsername() { return username; } ,我把这段代码放在第一篇了。
  • 我编辑了第一篇文章并添加了 JSP 和 JavaScript 验证器。正如您在上面看到的那样,我在 javaScript 函数中验证了 Struts 表单。即使用户禁用 JavaScript,发送的数据也将是空白的,而不是 null。
  • @SJ.Jafari 你有解决这个问题的办法吗
  • @gnanz,实际上,不。这有时会发生!我只需要检查传入的值不为空。

标签: java jsp struts2 null


【解决方案1】:

在你的jsp页面中可能有多个名称为usename的元素,而不是使用document.getElementsByName获取文本框值尝试使用表单引用document.formid.username.value获取
并尝试在您的用户名文本框声明中设置空值,例如 &lt;s:textfield .... value="" /&gt;

【讨论】:

  • @SJ.Jafari 你有解决这个问题的办法吗
【解决方案2】:

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

【讨论】:

  • 其实里面有getter和setter。没有它们,struts 不起作用!正如我之前提到的,这个问题偶尔会发生。
猜你喜欢
  • 2011-08-07
  • 2019-04-06
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多