我在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;
}
出现这种行为的原因是什么? 提前致谢
答案 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的属性,也没有会话参数。
希望这可以帮助你。