"用request.getParameter"返回" -1"对于不存在的网址参数

时间:2016-06-14 06:57:55

标签: java validation jsp struts-1

我在JSP文件中使用了以下命令来检索URL参数。这个JSP文件代表一个网页,其中包含我正在使用Struts验证器进行验证的表单。

<% String tempVal= (String)request.getParameter("parm");%>

最初加载表单时,如果没有名称为tempVal的网址参数,则null参数的值为parm
然后我提交表单中包含一些无效数据,并且使用验证错误消息进入同一页面(在Validate类中点击ActionForm方法之后)。
但这次tempVal参数的值为-1
以下是Validate类中的ActionForm方法。

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
{
    ActionErrors errors = null;
    errors = super.validate(mapping, request);
    String temp2 = request.getParameter("param3");
    if(temp2 == null){
        errors.add("some Error");
    }
    return errors;
}

出现这种行为的原因是什么? 提前致谢

1 个答案:

答案 0 :(得分:0)

如果您尝试以其他形式接收请求,则您的网址参数必须为字符串格式。

但如果您的Url参数不是字符串格式,那么我建议您使用 getAttribute

这里也发生了同样的情况,因为你试图从Object获取参数,并且十次转换为String,它会给你-1。

第一页

  //first page: first.jsp
  <% request.setAttribute("PAGE", "param");%> 
  <jsp:forward page="/second.jsp"/>

和second.jsp:

  <%=request.getAttribute("PAGE")%>

了解属性不是参数至关重要。 属性的返回类型是Object,而参数的返回类型是String。在调用getAttribute(String name)方法时,请记住必须强制转换属性。

此外,没有特定于servlet的属性,也没有会话参数。

希望这可以帮助你。