调试时,动作元素传递参数,参数值为空,可能是啥原因造成的?
1.view.jsp:包含页面
<%
SalesOrder so = (SalesOrder) request.getAttribute("form");
SimpleDateFormat sdf = new SimpleDateFormat(so.getDateFormat(),
Locale.US);
//String incUri="inc" + so.getState().desc.replace(/\W/g,"") + ".jsp";
String [color=red]incUri[/color] = "inc" + so.getState().desc.replaceAll("\W", "")
+ ".jsp";
%>
……
[code="java"]
/jsp:include[/code]
2.ord.items.jsp:被包含页面
String incUri=request.getParameter("incUri"); //获取请求范围参数的值(从包含页面传递的参数)
问题:调试时,发现变量incUri的值为空,可能是啥原因造成的?
你在什么地方 request.set 这个值了
${incUri} 你这个值 是用EL取的? 那肯定之前你的set 一下 你没有set
啊
简单点 <%=incUri %>
需要request.setAttribute("incUri",XXX);才能在页面中用EL表达式取到这个值
(1) ${incUri}的取值作用域依次为:pagecontext, request,session,application,你没有在任何作用域中设值,注:pagecontext并不是对应jsp中定义的变量
(2)但不知道为什么按别人说的 设置请求范围的属性,然后用EL就不行?
因为你没有设置请求范围的属性
用el得找到符合servlet版本 支持el 对应的jstl.jar或标签jar包。
[color=red][/color]
/jsp:include
incUri 应该是取这里的值
String incUri = "inc" + so.getState().desc.replaceAll("\W", "")
- ".jsp";
所以jsp:include 中要换成
直接换成<%=incUri%>试试看,可能不支持EL表达式。
至于EL表达式无效的原因,可能跟使用的Servlet规范版本有关,比如曾经遇到过jetty下EL表达式无效的问题,原因和解决办法如下:
web.xml遵循Servlet2.3规范的WEB应用,EL表达式的计算默认是启用的,
web.xml遵循Servlet2.4及以后规范的WEB应用,EL表达式的计算默认是关闭的
解决办法是:在JSP文件中加上一行: <%@ page isELIgnored="false"%>